◆結論
当然状況次第で必要なものを選択する必要がある。
ただ、通常はe.ToString()でいいと思われる。自作の例外は、場合によって、e.Messageでもいいかも。
◆メインコード①(InnerException無し)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ExCatchStr
{
class Program
{
static void Main(string[] args)
{
try
{
int zero = 0;
int tmp = 0 / zero;
}
catch (Exception e)
{
var str = e.Message; // ★★★ この行を変更する
Console.WriteLine(str);
}
Console.ReadKey();
}
}
}
◆結果
No | コード | 結果 | 時間 |
1 | e.Message | 0 で除算しようとしました。 | 未 |
2 | e.Source (namespaceが出てる?) |
ExCatchStr | 未 |
3 | e.StackTrace | 場所 ExCatchStr.Program.Main(String[] args) 場所 c:\users\owner\documents\visual studio 2015\Projects\ExCatchStr\ExCatchStr\Program.cs:行 16 | 未 |
4 | e.Data | System.Collections.ListDictionaryInternal | 未 |
5 | e.InnerException (コンソール上は空だが、nullが返されている) |
未 | |
6 | e.HResult | -2147352558 | 未 |
7 | e.TargetSite | Void Main(System.String[]) | 未 |
8 | e.ToString() | System.DivideByZeroException: 0 で除算しようとしました。 場所 ExCatchStr.Program.Main(String[] args) 場所 c:\users\owner\documents\visual studio 2015\Projects\ExCatchStr\ExCatchStr\Program.cs:行 16 |
未 |
9 | e.ToString().Replace(Environment.NewLine, "") | System.DivideByZeroException: 0 で除算しようとしました。 場所 ExCatchStr.Program.Main(String[] args) 場所 c:\users\owner\documents\visual studio 2015\Projects\ExCatchStr\ExCatchStr\Program.cs:行 16 | 未 |
いずれ確認予定。
◆実行環境
■VMware WorkStation10上の仮想マシン
・CPU:2
・メモリ:2GB
・OS:Windows7
・MSVS ver:Visual Studio 2015 Community
■ホストPCの性能(参考)
・CPU:Intel Core i5-4250U
・メモリ:8GB
・ドライブ:SSD(Plextor PX-512M3P)
・OS:Windows10
0 件のコメント:
コメントを投稿