例外かリターン値か

本業は組み込み系なんで、業務系のクラスなんて設計したことないんですが、
C# (てか .NET) のクラスのメソッドでエラーを返すときって、
例外で返すべきなんかな? 昔ながらのリターン値で返すべきなんかな?
ないしはその使い分けってなんなのかな?
どうもJavaと.NETでは作法がちょっと違うようですが。
( .NETJavaみたいにチェック例外の捕捉もれをコンパイル時にチェックしたりしないので。)
人によって言うことがまちまちなのでよく分かりません。思想の問題?