Const. Pierre Bourdages said the officer, a constable who has been with the force for six years, was in stable condition in hospital after being wounded in the neck and forearm.
Bourdages said two officers went to the Metro Turning Point shelter at around 8:30 p.m. to arrest a 31-year-old man wanted on an arrest warrant. He said the officers spotted the man on the steps outside the emergency shelter, but that he fled when he spotted the police.
The officers stopped him after a short pursuit.
"The suspect turned on the officer and stabbed one of the officers," he told reporters at a briefing at police headquarters.
"His life is not in danger, but he is recovering in hospital at this time."
Bourdages said it was thought the officer suffered a more serious injury initially because of the significant amount of blood.
Bourdages said the other officer Tasered the man and took him into custody, as multiple police vehicles and other officers descended on the area. He said a knife was recovered at the scene.
He said the suspect failed to appear in court Friday on a charge of assault with a weapon and police learned that he was at the shelter.
Bourdages said he expected charges would be laid, adding they could include attempted murder.