习惯了在 JS 中写 try catch 语句,所以在c++代码中瞎写。。杯具。我对c++的了解太少了。
1.在C++中,很多错误是try{}catch{}捕获不到的,比如空指针访问,野指针访问等,程序都直接崩溃,不会让你捕获的。所以,很遗憾,我惯用try catch,并没有达到预期。
2. 绝大多数 windows api 在执行时也并不抛出异常,直接挂掉。还是要对每一个问题做其相应的处理,才不至于挂掉。
3. 但可考虑用 GetLastError 获取错误信息。
4. 另,考虑到性能问题:
在c++程序中,try {} catch{} 是有代价的。
每一个try {} catch{} 都会降低执行效率。增加文件大小。
故此,不可滥用try {} catch{} ,只有那些不能明确捕捉的错误才应用try {} catch{} ,比如IO错误。
能通过返回值或者其他方式检查的错误,绝对不要用try {} catch{} 。
但是在C#,VB.NET等语言中,try {} catch{} 虽然同样不可滥用,
但 不会像C++一样增加文件大小。这与C++语言对于try {} catch{} 的实现有关。
附解析: