As a youth, Caron played in the 2003 and 2004 Quebec International Pee-Wee Hockey Tournaments with the Rimouski Océanic minor ice hockey team..
Junior
Caron played for the Athol Murray College of Notre Dame in 2005–06 prior to being drafted by the Rimouski Océanic in the first round, eighth overall in the 2006 QMJHL Draft. In his rookie season with the team, Caron finished fifth in team scoring, earning 40 points in 56 games, and led Rimouski with a +11 rating. In his second year in Rimouski, Caron would miss some time due to injuries, appearing in only 46 games, however, he would improve on his point total from the previous year, scoring 20 goals and adding 23 assists for 43 points, helping the Océanic make the playoffs. Caron added four points in nine playoff games. In 2008–09, Caron would once again improve with his numbers, appearing in 56 games, scoring a team high 36 goals, while earning 67 points, third highest on the club. In the playoffs, Caron earned 11 points in 13 games. Since Rimouski was hosting the 2009 Memorial Cup, the team had an automatic berth in the tournament. In four games, Caron scored two goals, as Rimouski was eliminated after losing to the Windsor Spitfires of the Ontario Hockey League in the tie-breaking game. Caron began the 2009–10 season with Rimouski, where in 20 games, he had 9 goals and 20 points. At the trade deadline, Caron was traded to the Rouyn-Noranda Huskies. Caron finished the season with Huskies, where in 23 games, he scored 17 goals and 33 points. Caron then added 7 goals and 18 points in 11 playoff games for Rouyn-Noranda.
Professional
Caron signed with the Boston Bruins on March 31, 2010. He began the 2010–11 season in the Bruins' NHL roster. He scored his first NHL goal on October 16, 2010, against Martin Brodeur of the New Jersey Devils. When Boston won the Stanley Cup in 2011, Caron received a Stanley Cup ring and was included in the team picture, although did not meet the requirement to have his named engraved on the Cup. On July 16, 2014, Caron re-signed for his fifth season with the Bruins organization on a one-year contract. At the beginning of the 2014–15 season, despite making the Bruins' opening night roster, Caron was placed waivers on October 4, 2014. Going unclaimed, Caron was later reassigned to the Bruins' American Hockey League along with a sixth-round pick in the 2016 NHL Entry Draft) to the Colorado Avalanche in exchange for Maxime Talbot and Paul Carey. Caron made his Avalanche debut on March 4, 2015, in a 3–1 victory over the Pittsburgh Penguins. Initially promoted to play on the top scoring lines, Caron was unable to produce and endured a diminishing role to end the season, going scoreless in 19 games with the Avalanche. As an impending restricted free agent, Caron was not offered a new contract by Colorado, after which he became a free agent. On July 2, 2015, Caron signed a one-year, two-way contract with the St. Louis Blues. At the conclusion of his contract with the Blues, Caron was not extended and left as a free agent. On September 25, 2017, Caron accepted an AHL invitation to attend the Toronto Marlies' 2017 training camp. On October 9, he signed with Krefeld Pinguine of the Deutsche Eishockey Liga. He was limited to just 8 games with Krefeld due to injury, posting 10 points. In the following 2018–19 season, Caron returned for his second campaign with Krefeld. He continued to display his offensive prowess in the DEL, collecting 11 points in 12 games before leaving the club to take up a two-year contract with Russian outfit, HC Sibir Novosibirsk of the Kontinental Hockey League, on November 2, 2018. On February 13, 2020, Caron left German club, Schwenninger Wild Wings of the Deutsche Eishockey Liga and joined Swiss club, Genève-Servette HC of the National League to provide depth for the remainder of the regular season and the playoffs.