当前位置: 首页 > 面试题库 >

如何在Java中传播异常

郗奇玮
2023-03-14
问题内容

我是C程序员,最近刚学习一些Java,因为我正在html" target="_blank">开发一个Android应用程序。目前,我处于一种情况。以下是一个。

public Class ClassA{

public ClassA();

public void MyMethod(){

   try{
   //Some code here which can throw exceptions
   }
   catch(ExceptionType1 Excp1){
   //Here I want to show one alert Dialog box for the exception occured for the user.
   //but I am not able to show dialog in this context. So I want to propagate it
   //to the caller of this method.
   }
   catch(ExceptionType2 Excp2){
   //Here I want to show one alert Dialog box for the exception occured for the user.
   //but I am not able to show dialog in this context. So I want to propagate it
   //to the  caller of this method.
   }
   }
}

现在,我希望在另一个类的其他地方使用方法MyMethod()的调用。如果有人可以为我提供一些代码片段,如何将异常传播到MyMethod()的调用者,以便可以在调用者方法的对话框中显示它们。

对不起,如果我对这个问题的回答不太清楚和奇怪。


问题答案:

只是首先不要捕获异常,并更改您的方法声明,以便它可以传播它们:

public void myMethod() throws ExceptionType1, ExceptionType2 {
    // Some code here which can throw exceptions
}

如果需要采取一些措施 然后 传播,则可以将其重新抛出:

public void myMethod() throws ExceptionType1, ExceptionType2 {
    try {
        // Some code here which can throw exceptions
    } catch (ExceptionType1 e) {
        log(e);
        throw e;
    }
}

这里ExceptionType2根本不会被捕获-它会自动传播。ExceptionType1被捕获,记录并重新抛出。

不是 一个好主意,有catch块这 只是 重新抛出异常-
除非有一些微妙的原因(例如,以防止处理它更一般的catch块)通常应该只是删除catch块来代替。



 类似资料:
  • 问题内容: 是否有关于Java中异常传播的准则? 何时在方法签名中添加例外?例如:如果仅当缺少必要的程序资源时才引发异常,并且只能在顶层进行处理,那么是否可以将所有使用erring方法的方法传播给使用此异常的所有方法? 有没有好的做法?有不良做法吗? 很抱歉,如果我含糊不清,但是我只是在寻求有关异常的编程风格的(一般)建议。 问题答案: 过去对我有帮助的准则包括: 当方法无法处理异常时引发异常 ,

  • 当异常被抛出到组播中时,Camel不会传播异常。 在以下设置下,从其beanref引发异常: 为什么我不能向父路由提出多播异常? 骆驼2.17-快照

  • 我正在尝试使用我在Internet上找到的此代码控制mp3文件量,但在库中添加所有必需的jar后,我仍然无法这样做。 以下是我正在使用的内容: 如果我播放wav文件,它可以正常工作,但对于mp3,我会出现以下错误: 至于mp3支持,我已经导入了mp3spi1.9.5.jar、jl1.0.1.jar和tritonus-share.jar

  • 问题内容: 我有以下熊猫数据框: 产生此结果: 我如何传播,以便最终得到这个: 问题答案: 使用或: 但是,如果重复,需要或集合体,或可以改变,…: ValueError:索引包含重复的条目,无法重塑 编辑: 对于设置为和的清洁:

  • 问题内容: 什么是异常传播?我尝试使用Google,但找不到满意的结果。最好用Java来解释这一点。 问题答案: 令人惊讶的是,在Java教程页面中有关exception的解释。 异常从一个方法传播到另一个方法,直到调用被捕获为止。因此,如果调用,调用,调用,并且如果抛出异常,则除非这些方法之一捕获到该异常,否则该异常将从d传播到c到b传播到a。

  • 问题内容: 我很快就遇到了这种愚蠢的行为,在这种行为中,强制展开可选对象不会传播。 从文档中: 尝试使用!访问不存在的可选值会触发运行时错误。在使用!之前,请始终确保可选内容包含非nil值。强制释放其价值。 复制: 和 这对我来说似乎不合逻辑或前后不一,我找不到有关此主题的任何文档。 这是设计使然吗? 问题答案: 从文档中: 错误处理 错误处理是响应程序错误状态并从错误状态中恢复的过程。Swift