异常处理,在这种情况下它是如何工作的

     2023-02-19     16

关键词:

【中文标题】异常处理,在这种情况下它是如何工作的【英文标题】:Exception handing , how does it work in this case 【发布时间】:2021-09-12 06:58:04 【问题描述】:

我有一个 Class A 和 Class B 类型的 Object 返回一个 Object ,在什么情况下我会得到一个 null ?如果 test 中有异常,我使用外部 api 并且抛出异常,控制不应该转到外部 A 类吗? 我在这一行得到一个空指针异常 -> ob.toString(); 无法理解这一点。 提前感谢您的帮助

Class A
   try
      B b = new B();
      UserDefinedObject ob = b.test();
      ob.count();
   
   catch(Exception ex)
    


Class B 
    try
     UserDefinedObject test()
       return object;
     
   
   catch(Exception ex)
      throw ex;
    
  return null;

【问题讨论】:

如果这是 java 代码,它不会编译,更不用说运行,你想要多少理由? 这段代码甚至无法编译。所以请添加正确的代码(这也与 Spring 或 Spring Boot 无关,所以我删除了这些标签,因为这只是一个普通的 Java 问题)。 可能是我在说明这一点方面做得不好,这段代码确实编译了我有一个用组件注释的类,我从类 A 中调用它,它将调用类 B 包含在一个 try catch 块中,我但是我得到一个 null 返回 【参考方案1】:

尽管您提供的事实代码不正确且不可编译,return null 语句仍有无法访问的代码。所以你需要确保你返回的对象不为空。如果要使其可执行和清洁,例如:

public class A 

  public static void main(String []args)
     B b = new B();
     try
       Object ob = b.test();
       System.out.println("Result: " + ob.toString());
      catch(Exception ex)
       System.out.println("Failed in parent call");
     
  
 
 
  static class B 
     Object test()
       try
         return new String("B");
        catch(Exception ex)
         System.out.println("Failed in B class");
         throw ex;
       
     
   

 

作为 Object 我使用 new String("B") 只是为了简化代码。 在 B 中只有 2 个退出点:测试方法中的 return 语句和异常块,异常块之后的任何代码都将无法访问。如果 new String("B") 产生 Exception 它将被 B.test() 捕获并传递给 A。主要()。希望它在这里增加了一点光。

【讨论】:

谢谢Yaro,这很清楚。下次我会更好地提出问题

Python多处理:如何在异常时关闭多处理池

】Python多处理:如何在异常时关闭多处理池【英文标题】:Pythonmultiprocessing:Howtoclosethemultiprocessingpoolonexception【发布时间】:2017-11-1903:18:40【问题描述】:我正在使用python多处理来拆分较长的进程之一并并行运行。它工作正常,... 查看详情

如何在 Swift 中捕获异常

】如何在Swift中捕获异常【英文标题】:HowtocatchanexceptioninSwift【发布时间】:2014-10-1618:58:28【问题描述】:我知道并理解swift中的错误处理-没有例外。但是在Cocoa和CocoaTouch中存在一些情况,没有其他方法可以处理错误,只能捕获... 查看详情

异常线程

第一章 异常1.1 概念及作用1).“异常”:指程序在“运行时”JVM遇到了无法处理的数据,或者表达式,这种情况就叫:异常。(异常指的并不是语法错误)2).JVM遇到这种异常情况,通常是在控制台打印异常信息,然后结束... 查看详情

流程图的异常情况处理

任何工作都有异常情况,每种异常情况都画流程图,再加上正常运作的流程图,岂不是同一工作要用两个流程图来描述?三百个流程图不是要变成六百个?而异常情况处理恰恰又是企业管理不规范的产物,允许不规范的流程继续... 查看详情

什么是 [cmdletbinding()] 以及它是如何工作的?

...它们像编译的cmdlet一样运行我们可以在脚本顶部使用它。这种情况下的功能 查看详情

如何在 Python 中分析异常处理?

】如何在Python中分析异常处理?【英文标题】:HowtoprofileexceptionhandlinginPython?【发布时间】:2013-12-2810:43:21【问题描述】:有没有办法找出有多少异常被抛出(和捕获)以及异常处理花费了多少时间?我正在使用pyparsing(稍作修... 查看详情

异常处理

异常(Exception)用于在指定的错误发生时改变脚本的正常流程。什么是异常?PHP5提供了一种新的面向对象的错误处理方法。异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程。这种情况称为异常。当异常被触... 查看详情

在这种情况下如何通过 jQuery 选择图像图标?

】在这种情况下如何通过jQuery选择图像图标?【英文标题】:HowtoselecttheimageiconbyjQueryinthiscondition?【发布时间】:2012-07-2419:59:27【问题描述】:我让用户通过单击一个按钮来创建图像和按钮(上面有图像的按钮):“new_a_window”... 查看详情

编程思想之异常处理

  什么叫异常处理?什么叫异常(Exception)?顾名思义就是非正式的情况,出现了不希望出现的意外,异常处理就是遇到这种意外时准备的对策和解决方案。比如您开着一辆劳斯莱斯在公路上行走,突然前面出现一个小孩... 查看详情

在自我分配期间,复制和交换习语如何工作?

...pidiom问题和答案。但是我没有得到一件事:在自我分配的情况下它是如何工作的?示例中提到的对象other不会释放分配给mArray的内存吗?那么被自赋值的对象不会有一个无 查看详情

如何在某些情况下停止 iPad 旋转?

】如何在某些情况下停止iPad旋转?【英文标题】:HowtostopiPadrotationsomeoccasion?【发布时间】:2013-11-0319:08:48【问题描述】:我有iPad应用程序,它是单视图应用程序。该应用程序支持横向和纵向视图。但它有一个按钮,如果按下它... 查看详情

了解特定类型的死锁

...语句。我知道在某些情况下这会导致死锁,但我不明白在这种特定情况下它是如何发生的。受害者的询问:SELECTid_particle,id_event,dt 查看详情

如何在不关闭应用程序的情况下处理异常? [关闭]

】如何在不关闭应用程序的情况下处理异常?[关闭]【英文标题】:Howtohandleanexceptionwithoutclosingapplication?[closed]【发布时间】:2014-07-3002:46:02【问题描述】:我有一个trycatch用于通过WPFC#应用程序发送电子邮件,如下所示:trysmtpmai... 查看详情

java示例代码_不确定字符串拆分在这种情况下是如何工作的

java示例代码_不确定字符串拆分在这种情况下是如何工作的 查看详情

在这种情况下,链式赋值运算符如何工作 [重复]

】在这种情况下,链式赋值运算符如何工作[重复]【英文标题】:Howdoeschainingassignmentoperatorworkinthissituatio[duplicate]【发布时间】:2019-12-1510:57:58【问题描述】:我看到这个有点奇怪的赋值运算符链接在某个地方,我一直在试图理... 查看详情

iOS:在这种情况下 put 请求如何工作?

】iOS:在这种情况下put请求如何工作?【英文标题】:iOS:Howwouldaputrequestworkinthisscenario?【发布时间】:2014-10-2020:21:31【问题描述】:我正在使用AFNetworking并试图弄清楚如何正确使用PUT请求。这就是API文档给我的(只是一个简单的... 查看详情

了解如何在 R 中处理 .Internal C 函数

】了解如何在R中处理.InternalC函数【英文标题】:Understandinghow.InternalCfunctionsarehandledinR【发布时间】:2013-11-0822:21:38【问题描述】:我想知道是否有人可以向我说明R如何从在控制台提示符下键入的R命令执行C调用。我对R对a)函数... 查看详情

这种排序方法的名称是啥,它是如何工作的,它与 Arrays.sort() 相比如何?

】这种排序方法的名称是啥,它是如何工作的,它与Arrays.sort()相比如何?【英文标题】:Whatisthenameofthissortingmethod,howdoesitworkandhowdoesitcomparetoArrays.sort()?这种排序方法的名称是什么,它是如何工作的,它与Arrays.sort()相比如何?【... 查看详情