标签: throw

异常处理:抛出,抛出和Throwable

可以任你解释的区别是什么之间throw,throws以及Throwable和什么时候使用?

java exception-handling throw throwable throws

54
推荐指数
3
解决办法
5万
查看次数

什么是generator.throw()有用吗?

PEP 342(通过增强型生成器的协程)throw()向生成器对象添加了一个方法,它允许调用者在生成器引发异常(就好像它是由yield表达式抛出的).

我想知道这个功能的用例是什么.

python generator throw

50
推荐指数
3
解决办法
6950
查看次数

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

我发现有三种方法可以捕获异常,有什么区别?

1)按价值捕获;

2)引用参考;

3)用指针抓住;

我只知道按值捕获将调用该对象的两个副本,通过引用捕获将调用一个.那么指针捕获怎么样?什么时候用指针捕捉?除了抛出一个对象,我可以抛出一个像这样的对象的指针吗?

class A {}

void f() {

  A *p = new A();
        throw p;


}
Run Code Online (Sandbox Code Playgroud)

c++ exception-handling try-catch throw

48
推荐指数
3
解决办法
2万
查看次数

什么是单一的"抛出"; 声明呢?

这些天,我一直在阅读很多C++ FAQ,尤其是这个页面.

通过阅读本节,我发现了一种"技术",作者称之为"异常调度程序",允许某人将所有异常处理分组到一个方便的函数中:

void handleException()
{
  try {
    throw; // ?!
  }
  catch (MyException& e) {
    //...code to handle MyException...
  }
  catch (YourException& e) {
    //...code to handle YourException...
  }
}

void f()
{
  try {
    //...something that might throw...
  }
  catch (...) {
    handleException();
  }
}
Run Code Online (Sandbox Code Playgroud)

困扰我的是单一throw;陈述:如果你考虑给定的例子然后肯定,它显然是做什么的:它重新抛出首先陷入的异常f()并再次处理它.

但是,如果我handleException()直接调用它,而不是从一个catch()条款中做到这一点怎么办?有没有指定的行为?

此外,对于奖励积分,throw你知道的还有其他"怪异"(可能不是好词)的使用吗?

谢谢.

c++ exception throw

47
推荐指数
3
解决办法
1万
查看次数

为什么'抛出'在Swift中不安全?

throws关键字是对Swift最大的误解.考虑以下代码:

func myUsefulFunction() throws
Run Code Online (Sandbox Code Playgroud)

我们无法真正理解它会抛出什么样的错误.我们唯一知道的是它可能会引发一些错误.了解错误可能的唯一方法是查看文档或在运行时检查错误.

但这不是针对斯威夫特的本性吗?Swift具有强大的泛型和类型系统,可以使代码具有表现力,但感觉就好像throws完全相反,因为您无法从查看函数签名中获得有关错误的任何信息.

为什么会这样?或者我错过了重要的事情并误解了这个概念?

try-catch throw swift

46
推荐指数
2
解决办法
3305
查看次数

是否可以通过编程方式抛出NullPointerException?

当有后置条件时,方法的返回值不能为空,可以做什么?

我可以

assert returnValue != null : "Not acceptable null value";
Run Code Online (Sandbox Code Playgroud)

断言可以关闭!

所以可以这样做

if(returnValue==null)
      {
           throw new NullPointerException("return value is null at method AAA");
      }
Run Code Online (Sandbox Code Playgroud)

或者,对于这样的条件,使用用户定义的异常(如NullReturnValueException)会更好吗?

java exception-handling nullpointerexception throw

44
推荐指数
7
解决办法
7万
查看次数

在JavaScript中"抛出新警告"?

目前我正在通过错误处理扩展我的JavaScript项目.该throw声明在这里发挥了重要作用:

throw new Error("text"); // Error: text
Run Code Online (Sandbox Code Playgroud)

但是,我还可以发出警告吗?我尝试了以下无济于事:

throw new Warning("text"); // Warning is not defined
Run Code Online (Sandbox Code Playgroud)

错误使Chrome的开发人员工具显示红叉,但如何让它显示警告图标(黄色感叹号)?

javascript error-handling throw

44
推荐指数
5
解决办法
3万
查看次数

C++ 11中不推荐使用的throw-list

正如我在cppreference中看到的那样 ,经典的"throw"声明列表现在已在C++ 11中弃用.离开这个机制的原因是什么?我应该如何指定抛出我的函数的异常?

c++ throw c++11

44
推荐指数
3
解决办法
2万
查看次数

异常与断言?

可能重复:
通过断言或异常的合同测试设计?

在决定使用异常而不是断言时(或反之亦然),是否遵循经验法则.现在我只会抛出我认为会在用户端运行时发生的事情(如套接字或文件错误).我使用的几乎所有其他东西都断言.

另外,如果我要抛出一个断言,那么抛出一个很好的标准对象是什么?IIRC有std :: logic_error但是这不是一个好的对象吗?我会丢失文件或意外输入(例如从命令行而不是前端应用程序)?

c++ exception throw

42
推荐指数
4
解决办法
4万
查看次数

T-SQL抛出异常

THROW在T-SQL存储过程中使用语句时,我面临着名的"不正确的语法" .我用Google搜索并检查了StackOverflow上的问题,但提出的解决方案(奇怪的是,接受了)对我不起作用.

我正在修改存储过程如下:

ALTER PROCEDURE [dbo].[CONVERT_Q_TO_O]
    @Q_ID int = NULL,
    @IDENTITY INT = NULL OUTPUT
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @EXISTING_RECORD_COUNT [int];

    SELECT
        @EXISTING_RECORD_COUNT = COUNT (*)
    FROM
        [dbo].[O]
    WHERE
        [Q_ID] = @Q_ID

    IF @EXISTING_RECORD_COUNT = 0
    BEGIN
        -- DO SOME STUFF HERE

        -- RETURN NEW ID
        SELECT @IDENTITY = SCOPE_IDENTITY()
    END
    ELSE
    BEGIN
         THROW 99001, 'O associated with the given Q Id already exists', 1;
    END
END
GO
Run Code Online (Sandbox Code Playgroud)

当我编写这个T-SQL时,我得到一个错误说

"THROW"附近的错误陈述.期待对话,对话,分发或交易

所有解决方案都建议在'THROW'之前或'ELSE BEGIN'语句之后放置一个分号.当我修改T-SQL时,我只是在'THROW'附近得到" 错误的语句 "错误,似乎无法找到解决方案.

有什么建议?

t-sql sql-server throw

39
推荐指数
6
解决办法
5万
查看次数