質問: C#で呼び出し先で必ず例外処理`try-catch`をしてほしいという関数があるのですが、`Swift`だと`throws`で出来ると思うのですが、C#でもこれは可能ですか?
回答: チェック済み例外(checked exception)という概念らしいですが、C#ではサポートしていないようです。 例外処理 - C SharpとJavaの比較 - Wikipedia > > Javaは非チェック例外 (unchecked exception) に加えてチェック済み例外 (checked exception) をサポートする。C#では非チェック例外のみである。チェック済み例外は、プログラマがメソッドから発生し得るものを全て宣言し、捕捉する必要がある。 > > 全てのエラーが処理されることを保証できるため、チェック済み例外は非常に便利だとする者もいる。一方、C#の設計者であるアンダース・ヘルスバーグのように、Javaのチェック済み例外はある程度実験的な仕様であり、小さなプログラムでの例を除いては実装する価値を見出せなかった、とする者もいる。 > > > 言語設計者(グループ?)の考え方の違いでしょう。 C#では意識してそういうものをサポートしておらず、SwiftとJavaはサポートしているようですね。 Swift Swiftのエラー処理についてざっくりとまとめてみた 【Swift】エラー処理 throws / throw / try / do / catch について学んだ Java & C# 例外の再考 チェック例外がJavaにあってC#にない理由 Java使いがC#を勉強する その8 例外処理 C# The Trouble with Checked Exceptions A Conversation with Anders Hejlsberg, Part II 上記の勝手日本語化The Trouble with Checked Exceptions Checked Exceptions are Evil C# のキーワード 「C#でSwiftのthrowsに相当する構文はありますか?」について →無いと考えられます。 「C#だと、この関数はry-catchすべきなのかな?というのがわかりずらいのですが、それに対しての対処法はないのでしょうか? 」について →ドキュメントを充実させて、その中に記述しておく、使う時はドキュメントを良く読む、ということでしょうね。 →下記記事の回答に、XMLドキュメントを作成して記述しておくとIDEが補助してくれるかも?というのがあるようです。 回答の1つ / 回答のもう1つ 英語版StackOverflowに質問と同類の記事がありました。 How to use Java-style throws keyword in C#?