标签: throw

应该在JavaScript中抛出什么类型的异常?

应该在JavaScript中抛出什么类型的对象?

我看到很多例子都是一个普通的旧版本string,似乎有一种半标准的Error类型.我应该更喜欢一个吗?

javascript exception throw

6
推荐指数
1
解决办法
173
查看次数

Java未经检查/检查异常澄清

我一直在阅读关于未经检查和已检查的问题,没有一个在线资源真正清楚这些差异以及何时使用两者.

根据我的理解,它们都会在运行时抛出,它们都代表超出逻辑预期范围的程序状态,但必须明确捕获已检查的异常,而未经检查的异常则不会.

我的问题是,假设为了论证我有一个方法来划分两个数字

double divide(double numerator, double denominator)
{    return numerator / denominator;    }
Run Code Online (Sandbox Code Playgroud)

以及需要在某处使用divison的方法

void foo()
{    double a = divide(b, c);    }
Run Code Online (Sandbox Code Playgroud)

谁负责检查分母为零的情况,是否应该检查或取消检查异常(忽略Java内置的分区检查)?

那么,除法方法是按原样还是按原样声明

double divide(double numerator, double denominator) throws DivideByZeroException
{
    if(denominator == 0) throw DivideByZeroException
    else ...
}

void foo()
{
    try{
        double a = divide(b, c);
    }
    catch(DivideByZeroException e)
    {}
}
Run Code Online (Sandbox Code Playgroud)

或者没有经过检查的例外,原样如下:

double divide(double numerator, double denominator)
{
    if(denominator == 0) throw DivideByZeroException
    else ...
}

void foo()
{
    if(c != 0)
       double a = …
Run Code Online (Sandbox Code Playgroud)

java exception unchecked throw checked

6
推荐指数
1
解决办法
3412
查看次数

为什么我的mocha/chai错误投掷测试失败?

我有一个简单的javascript包,我正在尝试测试.我想检查是否抛出了错误,但是当我的测试运行并且抛出错误时,测试被标记为失败.

这是代码:

var should = require('chai').should(),
    expect = require('chai').expect();

describe('#myTestSuite', function () {

    it ('should check for TypeErrors', function () {

        // Pulled straight from the 'throw' section of
        // http://chaijs.com/api/bdd/
        var err = new ReferenceError('This is a bad function.');
        var fn = function () { throw err; }
        expect(fn).to.throw(ReferenceError);

    })

})
Run Code Online (Sandbox Code Playgroud)

哪个,运行时给我以下输出:

kh:testthing khrob$ npm test

> testthing@0.1.0 test /Users/khrob/testthing
> mocha



  #myTestSuite
    1) should check for TypeErrors


  0 passing (5ms)   1 failing

  1) #myTestSuite should check for TypeErrors: …
Run Code Online (Sandbox Code Playgroud)

javascript mocha.js throw referenceerror chai

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

投掷我的析构函数时,为什么总是在"抛出一个......的实例后终止"?

我正在尝试编写一个单元测试来检测我的类的lock()功能的无效使用.为了做到这一点,我想使用析构函数并从那里抛出一个异常.不幸的是,g ++决定调用std :: terminate()而不是捕获异常.

该类有一个非常简化的版本:

class A
{
public:
    A() : f_lock(0) {}
    ~A() { if(f_lock) throw my_exception("still locked"); }
    lock() { ++f_lock; }
    unlock() { --f_lock; }
private:
    int f_lock;
};
Run Code Online (Sandbox Code Playgroud)

有一个有效的测试:

A *a = new A;
a->lock();
...
a->unlock();
delete a;
Run Code Online (Sandbox Code Playgroud)

我正在尝试编写无效测试:

A *a = new A;
a->lock();
...
bool success = false;
try
{
    delete a;
}
catch(my_exception const&)
{
    success = true;
}
catch(...)
{
    // anything else is a failure
}
if(!success)
{
    // test …
Run Code Online (Sandbox Code Playgroud)

c++ destructor g++ exception throw

6
推荐指数
1
解决办法
8661
查看次数

在Swift 2中处理异步闭包错误的最佳方法是什么?

我使用了很多异步网络请求的(顺便说一句任何网络请求的iOS需要通过异步),我发现的方式来更好地应对来自苹果的错误,dataTaskWithRequest它并不支持throws.

我有这样的代码:

func sendRequest(someData: MyCustomClass?, completion: (response: NSData?) -> ()) {
    let request = NSURLRequest(URL: NSURL(string: "http://google.com")!)

    if someData == nil {
        // throw my custom error
    }

    let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
        data, response, error in

        // here I want to handle Apple's error
    }
    task.resume()
}
Run Code Online (Sandbox Code Playgroud)

我需要解析我可能的自定义错误并处理可能的连接错误dataTaskWithRequest.引入了Swift 2 throws,但你不能抛弃Apple的关闭,因为它们没有抛出支持并且运行异步.

我只看到添加到我的完成块NSError返回的方法,但据我所知使用的NSError是旧式的Objective-C方式.ErrorType只能用于投掷(afaik).

使用Apple网络闭包时,处理错误的最佳和最现代的方法是什么?根据我的理解,任何异步网络功能都没有办法投入使用吗?

asynchronous throw nserror swift

6
推荐指数
1
解决办法
3063
查看次数

困惑于C++ Exception throw语句

我是C++的新手,很抱歉提出非常愚蠢的问题,但我对C++的异常处理机制中的throw语句感到困惑.

  • 在下面的代码中,为什么我们调用名称与类名匹配的函数?
  • 它是构造函数吗?
  • 它是否正在创建一个实例class Except

我不理解那里的语法.

class A
{
public:
  class Except{};
  void foo() { throw Except(); }
};

int main()
{
   A a;
   try
   {
     a.foo();    
   }
   catch(Except E)//exception handler
   {
     cout << "Catched exception" << endl;    
   }
}
Run Code Online (Sandbox Code Playgroud)

c++ syntax exception-handling exception throw

6
推荐指数
1
解决办法
214
查看次数

“抛出新异常”和“新异常”之间的区别?

我有兴趣了解使用throw new Exception()和 的最佳实践new Exception()。在使用的情况下new Exception(),我已经看到代码移动到下一个语句而不是抛出异常。

但是我被告知我们应该使用new Exception()to throw RuntimeException

任何人都可以对此有所了解吗?

java exception throw

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

抛出表达式不适用于布尔表达式?

投掷表达式适用于这种情况:

string myStr;

public MyObj( string myStr ) =>
    this.myStr = myStr ?? throw new ArgumentNullException( "myStr" );
Run Code Online (Sandbox Code Playgroud)

但为什么不编译呢?

bool isRunning;

public void Run() =>
    isRunning = !isRunning || throw new InvalidOperationException( "Already running" );
Run Code Online (Sandbox Code Playgroud)

c# throw c#-7.0

6
推荐指数
1
解决办法
148
查看次数

`throw 'foo'`、`throw Error('foo')`、`throw new Error('foo')` 和有什么区别?

我见过 3 种在 JavaScript 中抛出错误的不同方式:

throw 'message';
throw Error('message');
throw new Error('message');
Run Code Online (Sandbox Code Playgroud)

它们之间有什么区别?

注意:我知道类似的问题(123等)。它们都没有涵盖所有三种情况。

javascript error-handling throw

6
推荐指数
1
解决办法
1083
查看次数

Dart 中有没有办法将函数标记为抛出异常?

我试图在 Flutter/Dart 中找到一种方法来标记一个在执行过程中可能抛出异常的函数。在文档和谷歌中搜索一段时间后,我没有找到任何方法。

在其他语言中,例如 Swift、Java、Kotlin 等,我知道我们有这样的机制。Swift 中的示例代码是:

func doSomething() throws { ... }
Run Code Online (Sandbox Code Playgroud)

有谁知道这在 Dart 中是否存在?我认为它会很有用。

如果由于 Dart 语言设计它不存在,那么也许任何人都可以解释这个决定背后的原因。

提前致谢!

try-catch throw dart flutter

6
推荐指数
1
解决办法
1636
查看次数