What is the difference between 防止 and 予防?


My dictionary defines both 防止 and 予防 as "prevention", with 予防 having the
additional definitions of "precaution" and "protection against".

I sort of understand the latter definitions for 予防 as acting to stop something
which is happening from getting worse, which [explains its use in
medicine](http://ja.wikipedia.org/wiki/%E4%BA%88%E9%98%B2), but I've also seen
予防 used in the "prevention" sense similar to 防止. For example, from the Tanaka
Corpus:

> 森林火災の **防止** はすべての人が負う義務です。  
>  The prevention of forest fires is everyone's responsibility.
>
> 今週は火災 **予防** 週間です。  
>  This is Fire Prevention Week.
>
> 交通事故の **防止** 対策を講じなければならない。  
>  We must take measures to prevent traffic accidents.
>
> **予防** 運転は事故を防ぎます。  
>  Defensive driving can help you avoid accidents.
>
> 鶏卵生産におけるサルモネラ汚染を **防止** することが必要です。  
>  It is essential to prevent salmonella contamination in hen egg production.
>
> **予防** は治療にはるかにまさる。  
>  Prevention is much preferable to cure. [sic]

In what situations is it preferable to use 防止 over 予防? What are the nuances
that govern the choice of one word over the other?




The key to understanding the difference is in the characters, the 予 of 予防 can
be seen in the phrase 予め also, meaning "in advance" or "beforehand". While the
止 of 防止 can be seen in the phrase 止める, meaning "to stop something". In other
words, 予防 doesn't mean to stop something, it means to do something in advance
to _try_ to prevent it as you aware that it might happen, whereas 防止 just
means to stop something from happening (prevent it) and doesn't include the
"in advance" part.

So, to take your first two examples:

森林火災の防止 means to stop (prevent) forest fires, whereas 火災予防 implies doing
something in advance to try to prevent fires from happening as you are aware
that they might happen.




The key to understanding the difference is in the characters, the 予 of 予防 can
be seen in the phrase 予め also, meaning "in advance" or "beforehand". While the
止 of 防止 can be seen in the phrase 止める, meaning "to stop something". In other
words, 予防 doesn't mean to stop something, it means to do something in advance
to _try_ to prevent it as you aware that it might happen, whereas 防止 just
means to stop something from happening (prevent it) and doesn't include the
"in advance" part.

So, to take your first two examples:

森林火災の防止 means to stop (prevent) forest fires, whereas 火災予防 implies doing
something in advance to try to prevent fires from happening as you are aware
that they might happen.

