不思議な動作
ある機能で、凄く簡略化すると以下のようなコードがあったのですが、例外が投げられずに str.SubString(0, a); が実行されてしまい、そこで実行時例外が発生しました。えーっと、なんなんでしょう???デバッカで止めてみても、確かに a == -1, b == -1なのです。
string str = "〜"; int a = -1, b = -1; if (a <= 0 || b < 0) { throw new Exception(); } str.SubString(0, a); return 0;
何か言語仕様で勘違いしているところがあるのでしょうか?throwした場合は、その先のコードが評価されないと思っていたのですが、、、。try 〜 catchがなく AppDomainの UnhandledExceptionで catchしているのが何か関係するのでしょうか?識者の方、教えていただけると嬉しいです。