标签: throw

C#:你举起或抛出一个例外吗?

我知道这可能并不重要,但我想知道什么是正确的.

如果一段代码包含某些版本的throw new SomeKindOfException().我们是否说这段代码可能引发异常?或抛出异常?

关键字是throw,所以我倾向于那个,但提出异常也被大量使用...

他们有某种不同的含义吗?他们中的一个是否与另一个有所不同?或者它只是两个词意味着完全相同的东西?

c# terminology exception raise throw

13
推荐指数
1
解决办法
6389
查看次数

最好在获取URL时返回None或抛出异常?

我有一个Scala帮助器方法,当前尝试获取URL并返回带有该网页的HTML的Option [String].

如果有任何异常(格式错误的URL,读取超时等等)或者如果有任何问题,则返回None.问题是,抛出异常以便调用代码可以记录异常或者在这种情况下返回None是否更好?

scala exception idiomatic throw scala-option

13
推荐指数
1
解决办法
2472
查看次数

我可以重载throw关键字吗?

我想重载throw关键字以捕获一个继承自Exception的类,并让它在实际抛出之前执行一些日志记录和其他操作.这可能吗?或者我必须使用常规功能?

我试过了:

public class cSilException : Exception
    {
        private string m_strMsg;

        public override void throw(cSilException ex)
        {

        }
...
...
}
Run Code Online (Sandbox Code Playgroud)

c# exception throw

13
推荐指数
3
解决办法
2150
查看次数

投掷一个右值

考虑片段:

try {
    Foo f;
    throw std::move(f);
}
catch (Foo& f) { }
Run Code Online (Sandbox Code Playgroud)

[expr.throw]说:

异常对象的类型是通过从操作数的静态类型中删除任何顶级cv限定符并将类型从"T的数组"或"返回T的函数"调整为"指向T的指针"或"指针"来确定的.函数返回T",分别.

这将是Foo&&.然后根据[except.throw]初始化异常对象:

抛出异常copy-initializes(8.5,12.8)一个临时对象,称为异常对象.临时是一个左值,用于初始化匹配处理程序中声明的变量(15.3).如果异常对象的类型是不完整类型或指向不完整类型的指针(可能是cv-qualified),void则程序格式不正确.

这告诉我异常对象被初始化为:

Foo&& __exception_object = std::move(f);
Run Code Online (Sandbox Code Playgroud)

并且处理程序不匹配.但是,gcc和clang都会捕获此异常.那么这里的异常对象的实际类型是什么?如果Foo,为什么?

c++ throw language-lawyer c++14

13
推荐指数
1
解决办法
300
查看次数

C++中用于定义异常类和抛出异常的标准方法

我想构建一个具有函数的类,这些函数可能会抛出我想要在使用它时捕获的异常.我从标准异常类继承my_exception.我实现了what()函数,以便它返回一个存储在私有字符串变量中的字符串

我认为最好将异常定义为嵌套类,就像在iosream库中使用ios_base :: failure一样.

我不太确定的是,我应该在哪里以及如何定义my_excpetion的对象.我希望我能看到iostream功能的内部代码,看看他们是如何做到的.我考虑了几个选项:

  1. 对于异常的每个原因,我可以定义my_exception的静态实例,使用构造函数获取字符串并将其保存到我的私有字符串指针.

  2. 对于异常的每个原因,我可以定义另一个继承自my_exception的类,并实现作为返回常量字符串的函数(原因).我可以保存每个异常子类的实例,或抛出类型.顺便说一句,我们什么时候通常抛出类型而不是实例?

  3. 我想这是错的:每次我想抛出一个异常,用一个获取字符串的构造函数创建一个新的my_exception.这是用Java完成的,但据我所知,它在C++中会有问题,因为异常应该在某处删除.对?

我认为第一个是正确的,是吗?有更多标准选项吗?

非常感谢你!

c++ standards exception instance throw

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

在Javascript表达式中使用throw

这是我想要做的:

var setting = process.env.SETTING || throw new Error("please set the SETTING environmental variable");
                                     ^^^^^
Run Code Online (Sandbox Code Playgroud)

但是翻译抱怨"语法错误:意外的令牌抛出".

有没有办法在同一行中抛出异常,我们比较一个值是否为假?

javascript throw node.js

12
推荐指数
3
解决办法
8236
查看次数

重新抛出异常的自定义错误消息不是由what()打印的

我正在编写一组扩展的自定义异常std::exception.在某些代码中,当捕获异常时,我只是重新throw启动链,直到驱动程序main函数调用catches并打印结果.但是,最终打印的所有内容都是"std :: exception".这似乎不是我之前处理的范围问题.

为什么我的异常消息不能打印?

我的异常代码:

// General exception class
struct MyException : public std::exception
{
    std::string _msg;

    MyException(const std::string &exception_name) : _msg(exception_name) {}

    void setMessage(const std::string &message)
    {
        _msg += ": " + message + "\n";
    }

    void setLocation(const char * func, const char * file, const int line)
    {
        _msg += "  In function " + std::string(func) + "(" + file + ":" + std::to_string(line) + ")";
    }

    const …
Run Code Online (Sandbox Code Playgroud)

c++ exception throw

12
推荐指数
1
解决办法
1032
查看次数

最后在C++中

这是在标准C++中实现类似Last的行为的好方法吗?(没有特殊指针)

class Exception : public Exception
    { public: virtual bool isException() { return true; } };

class NoException : public Exception
    { public: bool isException() { return false; } };


Object *myObject = 0;

try
{
  // OBJECT CREATION AND PROCESSING
  try
  {
    myObject = new Object();

    // Do something with myObject.
  }

  // EXCEPTION HANDLING
  catch (Exception &e)
  {
    // When there is an excepion, handle or throw,
    // else NoException will be thrown.
  }

  throw NoException();
}

// …
Run Code Online (Sandbox Code Playgroud)

c++ exception finally try-catch throw

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

为什么.NET异常是可变的?

我想知道为什么基类库中的.NET异常类默认有一些可变成员

  • 为什么我可以改变Source,HelpLink和值Data,但不能改变其他任何像Message
  • 为什么抛出异常会重写StackTrace使它变得可变?将堆栈跟踪信息附加到现有跟踪是更好的设计(但仍然可变)?
  • .NET异常设计可能有哪些改进?

我只是在设计选择上很有意思......

.net exception-handling exception throw

11
推荐指数
1
解决办法
260
查看次数

11
推荐指数
2
解决办法
3690
查看次数