インタビューで、インタビュアーは、.net でコードを安全に実行するためのコンポーネントは何ですか? という 1 つの質問をしました。私はグーグルで試しましたが失敗しました。誰でも答えやリンクを教えてもらえますか?
単語の文書が 1 つ見つかりました。その中で、安全なコード実行のコンポーネントは、アセンブリ ローダー、コード検証ツール、JIT であることがわかりました。これは正しいです?
「コードの安全な実行」は多くのことを意味します。しかし、インタビュアーは、.net環境のセキュリティモデルであるCodeAccessSecurityを求めていたと思います。
CASはすべてのフレームワークバージョンで同じではなく、ここで説明する複雑な主題です。基本的に、アセンブリとコードの表記、アセンブリのオリジン、信頼レベルなどに基づいて、コードの実行を許可または禁止します。
ここでいくつかのイントロを得ることができます:
2.0または3.5=> http://msdn.microsoft.com/en-us/library/c5tk9z76 (v=vs.90 )
4.0または4.5=> http://msdn.microsoft.com/en-us/library/c5tk9z76 (v=vs.100 )
頭のてっぺんからの私の答えは、Try-Catchブロックです。(必要に応じて) ユーザーに意味のある出力を提供するために、タイプごとに例外をキャッチする必要がありますが、一般的な例外は内部テストに最適です。
try
{
/*Some code which could throw exceptions.*/
}
catch (Exception e)
{
Console.WriteLine("Error: {0}\nStack Trace: {1}", e.Message, e.StackTrace);
}
ただし、「安全な実行」とはクラッシュしないことを意味するという考えから外れているだけです。