exception-handling相关内容

异常处理:throw、throws 和 Throwable

谁能解释一下throw、throws 和Throwable 之间的区别以及何时使用哪个? 解决方案 throws :在编写方法时使用,声明所讨论的方法抛出指定的(已检查的)异常. 与检查异常相反,运行时异常(NullPointerExceptions 等)可能会在没有方法声明的情况下被抛出 throws NullPointerException. throw:实际抛出异常的 ..
发布时间:2021-12-17 17:00:52 Java开发

在 Python 中,如何捕获警告,就像它们是异常一样?

我在 python 代码中使用的第三方库(用 C 编写)发出警告.我希望能够使用 try except 语法来正确处理这些警告.有没有办法做到这一点? 解决方案 要将警告作为错误处理,只需使用: 导入警告warnings.filterwarnings("错误") 在此之后,您将能够捕获与错误相同的警告,例如这会起作用: 尝试:some_heavy_calculations()除了运行 ..
发布时间:2021-12-17 17:00:31 Python

如果 finally 块抛出异常会发生什么?

如果 finally 块抛出异常,究竟会发生什么? 具体来说,如果在 finally 块中途抛出异常会发生什么.此块中的其余语句(之后)是否被调用? 我知道异常会向上传播. 解决方案 如果 finally 块抛出异常究竟会发生什么? 该异常会向外传播并向上传播,并将(可以)在更高级别进行处理. 您的 finally 块将不会在抛出异常的点之后完成. 如果在 ..
发布时间:2021-12-17 16:59:53 C#/.NET

如何使用 ELMAH 手动记录错误

是否可以使用 ELMAH 执行以下操作? logger.Log("东西"); 我正在做这样的事情: 试试{//可能抛出异常的代码}捕获(异常前){//我需要在这里记录错误...} ELMAH 不会自动记录此异常,因为它已被处理. 解决方案 直接写日志的方法,从ELMAH 1.0开始工作: 试试{一些代码}捕获(异常前){Elmah.ErrorLog.GetDefault(Http ..
发布时间:2021-12-17 16:59:27 C#/.NET

在 android 上使用全局异常处理

是否有代码示例或关于如何使用 Thread.setDefaultUncaughtExceptionHandler 方法的教程?基本上,我正在尝试在我的应用程序中显示自定义警报对话框,无论何时抛出异常.是否有可能做到这一点?我知道如果在 UI 线程中抛出异常,在屏幕上显示一些东西有点棘手,但我不知道有什么解决办法. 解决方案 访问此页面并提出解决方案的人的基本示例 :) public cl ..
发布时间:2021-12-17 16:57:54 移动开发

try/catch/throw 和 try/catch(e)/throw e 的区别

和 有什么区别 尝试{}抓住{ 扔;} 和 尝试{}捕获(例外 e){扔e;} ? 我什么时候应该使用其中一种? 解决方案 结构 try { ... }catch () { ... }/* 你甚至可以省略这里的 () */尝试 { ... }catch (Exception e) { ... } 的相似之处在于两者都将捕获 try 块内抛出的每个异常(并且,除非您只是使 ..
发布时间:2021-12-17 16:57:45 C#/.NET

为什么在 C# 中使用 finally?

finally 块中的任何内容(几乎)总是被执行,那么将代码封闭在其中或不封闭有什么区别? 解决方案 finally 块中的代码将被执行,无论是否有异常.当涉及到某些需要像关闭连接一样运行的内务处理功能时,这非常方便. 现在,我猜测你的问题是为什么你应该这样做: 试试{做一点事();}抓住{抓住一些东西();}最后{总是DoThis();} 何时可以这样做: 试试{做一点事() ..
发布时间:2021-12-17 16:57:35 C#/.NET

为什么 C++ 不使用 std::nested_exception 来允许从析构函数抛出?

从析构函数抛出异常的主要问题是,在调用析构函数的那一刻,另一个异常可能是“飞行中"(std::uncaught_exception() == true),所以它是在这种情况下该怎么做并不明显.用新的“覆盖"旧的例外将是处理这种情况的可能方法之一.但决定在这种情况下必须调用 std::terminate(或另一个 std::terminate_handler). C++11 通过 std::n ..
发布时间:2021-12-17 16:56:55 C/C++开发

C++、__try 和 try/catch/finally

我有点想知道 C++ try/catch/finally 块.我见过这些带有两个下划线的命令,比如 __try.但是 MVSC 2010 项目也没有下划线运行.那么什么时候需要这些下划线? 解决方案 在 Windows 上,在操作系统级别支持异常.称为结构化异常处理 (SEH),它们大致相当于 Unix 信号.为 Windows 生成代码的编译器通常利用这一点,它们使用 SEH 基础结构来 ..
发布时间:2021-12-17 16:55:49 C/C++开发

.NET - 实现“捕获所有异常处理程序"的最佳方法是什么?

我想知道“如果一切都失败了就抓住它"的最佳方法是什么. 我的意思是,您在应用程序中处理尽可能多的异常,但仍然肯定会有错误,所以我需要一些东西捕获所有未处理的异常,以便我可以收集信息并存储将它们保存在数据库中或将它们提交给网络服务. AppDomain.CurrentDomain.UnhandledException 事件是否捕获了所有内容?即使应用程序是多线程的? 旁注:Wind ..
发布时间:2021-12-17 16:55:07 C#/.NET

如果我在 Try 块中返回一个值,是否会触发 finally 语句中的代码?

我正在为一位朋友审查一些代码,并说他在 try-finally 块中使用了 return 语句.即使 try 块的其余部分没有触发,Finally 部分中的代码是否仍然触发? 示例: public bool someMethod(){尝试{返回真;抛出新异常(“测试");//似乎没有被执行}最后{//有问题的代码}} 解决方案 简单的回答:是的. ..
发布时间:2021-12-17 16:54:05 C#/.NET

C++ catch 块 - 按值或引用捕获异常?

可能的重复: 在 C++ 中通过指针捕获异常 我总是按值捕获异常.例如 尝试{...}捕获(自定义异常 e){...} 但我遇到了一些用 catch(CustomException &e) 代替的代码.这是 a) 好的 b) 错误的 c) 灰色区域吗? 解决方案 C++ 中异常的标准做法是...... 按值抛出,按引用捕获 在继承层次结构面前,按值捕获是有问题的.假 ..
发布时间:2021-12-17 16:52:48 C/C++开发

如何抛出 C++ 异常

我对异常处理的理解很差(即,如何为自己的目的自定义 throw、try、catch 语句). 例如我定义了一个函数如下:int compare(int a, int b){...} 我希望函数在 a 或 b 为负数时抛出一个带有一些消息的异常. 我应该如何在函数定义中解决这个问题? 解决方案 简单: #include int 比较( int a, int b ) {if ..
发布时间:2021-12-17 16:51:13 C/C++开发

使用 IDisposable 和“使用"是否滥用?作为获得“范围行为"的手段;为了异常安全?

我在 C++ 中经常使用的东西是让类 A 通过 A 处理另一个类 B 的状态进入和退出条件> 构造函数和析构函数,以确保如果该范围内的某些内容抛出异常,则 B 在退出该范围时将具有已知状态.就首字母缩略词而言,这不是纯粹的 RAII,但它仍然是一种既定的模式. 在C#中,我经常想做 class FrobbleManager{...私有无效 FiddleTheFrobble(){this.F ..
发布时间:2021-12-17 16:50:28 C#/.NET

在 Python 中记录未捕获的异常

如何通过 logging 模块而不是 stderr 导致未捕获的异常输出? 我意识到最好的方法是: 尝试:raise Exception, '抛出一个无聊的异常'除了例外,e:logging.exception(e) 但我的情况是,如果 logging.exception(...) 在没有捕获异常时自动调用,那将会非常好.> 解决方案 正如 Ned 指出的那样,每次引发和未捕获异常时 ..
发布时间:2021-12-17 16:50:06 Python

C++中通过指针捕获异常

我发现有3种方法可以捕获异常,有什么区别? 1) 按值捕获; 2) 按引用捕获; 3) 通过指针捕捉; 我只知道按值捕获会调用对象的两个副本,按引用捕获会调用一个.那么如何通过指针捕获呢?什么时候用指针捕捉?除了抛出一个对象,我还能像这样抛出一个指向对象的指针吗? A 类 {}无效 f() {A *p = 新 A();扔 p;} 解决方案 推荐的方式是按值抛出,按引用 ..
发布时间:2021-12-17 16:48:58 C/C++开发

UnauthorizedAccessException 无法解决 Directory.GetFiles 失败

Directory.GetFiles 方法 在第一次遇到它没有访问权限的文件夹. 该方法抛出一个 UnauthorizedAccessException(可以被捕获),但在完成时,该方法已经失败/终止. 我使用的代码如下: 试试{//在指定目录中查找并返回找到的所有文件的路径getFiles = Directory.GetFiles(@directoryToSearch,文件类型,S ..
发布时间:2021-12-17 16:46:30 C#/.NET