在我的本地化应用程序中,我抛出一个像这样的ArgumentException: throw ArgumentException("LocalizedParamName", "LocalizedErrorMessage"); 我这样抓住它: catch (Exception ex){ Display(ex.Message);} 我收到的结果错误
throw ArgumentException("LocalizedParamName", "LocalizedErrorMessage");
我这样抓住它:
catch (Exception ex) { Display(ex.Message); }
我收到的结果错误信息如下:
LocalizedErrorMessage
参数名称:LocalizedParamName
这里的问题是“参数名称:”,它是英文而不是我的应用程序的语言.我假设该字符串是.NET框架的语言.任何人都可以确认吗?
一种解决方法是这样做:
catch (ArgumentException ex) { Display((ex as Exception).Message + "\n" + "Translated(Parameter name:)"+ ex.ParamName); } catch (Exception ex) { Display(ex.Message); }
还有其他更优雅的方式吗?
异常中的消息应该是针对开发人员的,而不是针对最终用户的.您应始终尝试捕获异常,以便显示有意义的错误消息. (不,“程序遇到意外错误并且现在将退出”没有意义.)您不应该向最终用户显示异常消息的原因是因为用户不关心开发人员是否通过从函数Foo()到函数Bar()的错误参数,更不用说它是怎么回事了.但是当你解决这个问题时,你需要知道这一点.因此,不要担心国际化您的异常消息,而是将您的消息国际化给用户,告诉他们发生了什么,您正在做什么来修复它,并希望他们将来如何避免这个问题.