标签: exception-handling

在Java中是否可以在同一个catch块中捕获两个异常?

我需要捕获两个异常,因为它们需要相同的处理逻辑.我想做的事情如下:

catch (Exception e, ExtendsRuntimeException re) {
    // common logic to handle both exceptions
}
Run Code Online (Sandbox Code Playgroud)

是否可以避免重复每个catch块中的处理程序代码?

java exception-handling try-catch

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

如何获取Python中捕获的异常名称?

如何获取Python中引发的异常的名称?

例如,

try:
    foo = bar
except Exception as exception:
    name_of_exception = ???
    assert name_of_exception == 'NameError'
    print "Failed with exception [%s]" % name_of_exception
Run Code Online (Sandbox Code Playgroud)

例如,我正在捕获多个(或所有)异常,并希望在错误消息中打印异常的名称.

python exception-handling exception

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

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

我经常在C++中使用的东西是让一个类通过构造函数和析构函数A处理另一个类的状态入口和退出条件,以确保如果该范围内的某些东西抛出异常,那么B将具有已知状态范围已退出.就首字母缩略词而言,这不是纯粹的RAII,但它仍然是一种既定的模式.BA

在C#中,我经常想做

class FrobbleManager
{
    ...

    private void FiddleTheFrobble()
    {
        this.Frobble.Unlock();
        Foo();                  // Can throw
        this.Frobble.Fiddle();  // Can throw
        Bar();                  // Can throw
        this.Frobble.Lock();
    }
}
Run Code Online (Sandbox Code Playgroud)

这需要像这样做

private void FiddleTheFrobble()
{
    this.Frobble.Unlock();

    try
    {            
        Foo();                  // Can throw
        this.Frobble.Fiddle();  // Can throw
        Bar();                  // Can throw
    }
    finally
    {
        this.Frobble.Lock();
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我想保证退货Frobble时的状态FiddleTheFrobble.代码会更好

private void FiddleTheFrobble()
{
    using (var janitor = new FrobbleJanitor(this.Frobble))
    {            
        Foo();                  // Can throw
        this.Frobble.Fiddle();  // Can throw …
Run Code Online (Sandbox Code Playgroud)

c# exception-handling raii

107
推荐指数
6
解决办法
6151
查看次数

如何在Android中阅读文本文件?

我想从文本文件中读取文本.在下面的代码中,发生异常(这意味着它进入catch块).我把文本文件放在应用程序文件夹中.我应该把这个文本文件(mani.txt)放在哪里才能正确读取它?

    try
    {
        InputStream instream = openFileInput("E:\\test\\src\\com\\test\\mani.txt"); 
        if (instream != null)
        {
            InputStreamReader inputreader = new InputStreamReader(instream); 
            BufferedReader buffreader = new BufferedReader(inputreader); 
            String line,line1 = "";
            try
            {
                while ((line = buffreader.readLine()) != null)
                    line1+=line;
            }catch (Exception e) 
            {
                e.printStackTrace();
            }
         }
    }
    catch (Exception e) 
    {
        String error="";
        error=e.getMessage();
    }
Run Code Online (Sandbox Code Playgroud)

java android exception-handling inputstream

107
推荐指数
5
解决办法
30万
查看次数

需要处理未捕获的异常并发送日志文件

更新:请参阅下面的"已接受"解决方案

当我的应用创建未处理的异常,而不是简单地终止时,我想首先让用户有机会发送日志文件.我意识到在获得随机异常后做更多的工作是有风险的,但是,嘿,最糟糕的是应用程序完成崩溃并且日志文件没有被发送.结果比我想象的更棘手:)

什么有效:(1)捕获未捕获的异常,(2)提取日志信息并写入文件.

什么不起作用:(3)开始发送电子邮件的活动.最终,我还有另一项活动要求用户的许可.如果我让电子邮件活动正常工作,我不会对另一方感到麻烦.

问题的关键是我的Application类中捕获了未处理的异常.由于这不是一个Activity,因此如何使用Intent.ACTION_SEND启动活动并不明显.也就是说,通常在启动一个活动时,调用startActivity并使用onActivityResult恢复.Activity支持这些方法,但Application不支持.

有关如何做到这一点的任何建议?

以下是一些代码剪辑作为入门指南:

public class MyApplication extends Application
{
  defaultUncaughtHandler = Thread.getDefaultUncaughtExceptionHandler();
  public void onCreate ()
  {
    Thread.setDefaultUncaughtExceptionHandler (new Thread.UncaughtExceptionHandler()
    {
      @Override
      public void uncaughtException (Thread thread, Throwable e)
      {
        handleUncaughtException (thread, e);
      }
    });
  }

  private void handleUncaughtException (Thread thread, Throwable e)
  {
    String fullFileName = extractLogToFile(); // code not shown

    // The following shows what I'd like, though it won't work like this.
    Intent intent = new Intent (Intent.ACTION_SEND);
    intent.setType ("plain/text");
    intent.putExtra (Intent.EXTRA_EMAIL, new …
Run Code Online (Sandbox Code Playgroud)

android exception-handling logcat

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

捕获在不同线程中抛出的异常

我的一个方法(Method1)产生一个新线程.该线程执行一个方法(Method2),并在exectution期间抛出异常.我需要获取有关调用方法的异常信息(Method1)

在某种程度上,我可以捕获这个Method1被抛出的异常Method2吗?

c# multithreading exception-handling

106
推荐指数
2
解决办法
9万
查看次数

尝试/最后(没有Catch)冒泡异常吗?

我几乎肯定答案是肯定的.如果我使用Try Finally块但不使用Catch块,那么任何异常都会冒泡.正确?

一般的做法有什么想法吗?

赛斯

.net c# vb.net exception-handling

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

如何使用可变消息抛出std :: exceptions?

这是我想要向异常添加一些信息时经常做的一个例子:

std::stringstream errMsg;
errMsg << "Could not load config file '" << configfile << "'";
throw std::exception(errMsg.str().c_str());
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法呢?

c++ exception-handling exception

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

现实世界Haskell的哪些部分现在已经过时或被视为不良做法?

Real World Haskell的第19章中,很多例子现在因为改变而失败了Control.Exception.

这让我觉得也许本书中的一些内容实际上已经过时,不再值得学习,毕竟它已经有6年了.我唯一的另一个参考是" 了解你是一个很好的Haskell",虽然它是一本很棒的书,但与RWH相比它更为基础.

任何读过这本书的人都可以就哪些部分不再相关提出一些建议吗?特别是本书后半部分的章节,例如软件事务内存,并发编程,套接字编程等.

编辑:这是关于2008年12月出版的书的版本,这是迄今为止唯一的已知版本(2017年11月)

haskell exception-handling

104
推荐指数
1
解决办法
9309
查看次数

Application.ThreadException和AppDomain.CurrentDomain.UnhandledException有什么区别?

好吧,这很简单:

  • Application.ThreadException和之间有什么区别
    AppDomain.CurrentDomain.UnhandledException

  • 我需要处理两者吗?

谢谢!

.net c# exception-handling winforms

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