当前位置: 首页 > 知识库问答 >
问题:

类中的Java自定义异常处理

徐安康
2023-03-14

我使用netbeans创建了这个异常类:

public class VehicleException extends Exception{
    private String matricula;
    private Calendar dataMatricula;
    private ModelVehicle model;

    private int causa;

        public VehicleException(int causa, Object valor) throws Exception {
        this.causa = causa;
        switch (causa) {
            case 1:
                dataMatricula = (Calendar) valor;
                break;
            case 2:
                matricula = (String) valor;
                break;
            case 3:
                model = (ModelVehicle) valor;
                break;

            default:
                throw new Exception("Utilització errònia en construir VehicleException. Causa: " + causa);
        }
    }

         @Override
    public String getMessage() {
        switch (causa) {
            case 1:
                return "dataMatricula erroni: " + dataMatricula + " Ha de contenir valor";
            case 2:
                return "matricula erroni: " + matricula + " Ha de contenir valor";
            case 3:
                return "Model erroni: " + model + " Ha de contenir valor";
            default:
                return "";
        }
    }
public class Vehicle implements Comparable<Vehicle> {

    private String matricula;
    private ModelVehicle model;
    private Calendar dataMatricula;


     public Vehicle(String matricula, ModelVehicle model, Calendar dataMatricula) throws VehicleException {
        setMatricula(matricula);
        setDataMatricula(dataMatricula);
        setModelVehicle(model);


    }


     public String getMatricula(){
         return matricula;
     }

     public ModelVehicle getModelVehicle(){
         return model;
     }
     public Calendar getDataMatricula(){
         return dataMatricula;
     }


      public final void setMatricula(String matricula) throws VehicleException {
        if (matricula == null || matricula.compareTo("") == 0) {
            throw new VehicleException(2,matricula);
        }
        this.matricula = matricula;
    }

      public void setModelVehicle(ModelVehicle model) throws VehicleException{
          if(model == null){
             throw new VehicleException(3,model);
          }
          else {
              this.model = model;
          }
      }

      public void setDataMatricula(Calendar c) throws VehicleException{
          if(c == null){
             throw new VehicleException(1,c);
          }
          this.dataMatricula = c;
      }

当我尝试编译时,问题变得更加突出,在setter方法中,我得到以下消息:

错误:未报告异常异常;必须捕获或声明被抛出抛出新车辆异常(2,matricula);C:\users\ivan\desktop\examen isidrer\m03-uf5\exmaenm03uf5\src\info\infomila\vehicle.java:55:错误:未报告的异常异常;必须捕获或声明要抛出抛出新VehicleException(3,model);C:\users\ivan\desktop\examen isidrer\m03-uf5\exmaenm03uf5\src\info\infomila\vehicle.java:64:错误:未报告的异常异常;必须捕获或声明要抛出抛出new VehicleException(1,c);

我不是很理解为什么会发生这种情况,因为setter方法有一个“throws vehicleexception”。

共有1个答案

雷国兴
2023-03-14

VehicleException的构造函数本身可以引发异常:

public VehicleException(int causa, Object valor) throws Exception {
                                                 ^^^^^^^^^^^^^^^^

这意味着您的调用范围需要从构造函数处理/重新抛出该异常,或者您可以选择抑制该异常而不是抛出它。

default:
    super.addSuppressed(new Exception("Utilització errònia en construir VehicleException. Causa: " + causa));
 类似资料:
  • 我来找你是因为我需要你的帮助。 在我的文件camel-context.xml中,我调用了一个存储过程来获取用户的信息。我需要解决的是: 如果存储过程不返回数据,则发送带有超文本传输协议代码404的UserNot的异常(我已经拥有该类)。 我一直在寻找如何做这件事,但找不到任何可以帮助我的东西。我刚刚开始使用这个框架,所以提前非常感谢您的帮助。 这里我的代码:

  • 如果 Java 提供的内置异常类型不能满足程序设计的需求,这时我们可以自己设计 Java 类库或框架,其中包括异常类型。实现自定义异常类需要继承 Exception 类或其子类,如果自定义运行时异常类需继承 RuntimeException 类或其子类。 自定义异常的语法形式为: 在编码规范上,一般将自定义异常类的类名命名为 XXXException,其中 XXX 用来代表该异常的作用。 自定义异

  • 我使用的是Nifi 0.4.1版本。我写自定义代码转换CSV到avro格式。我已经创建了类文件,并能够生成nar文件。将nar文件放置在lib目录中,并重新启动nifi服务器。 任何帮助都很感激.. 谢谢,

  • 我的要求是,如果post请求的JSON无效,我将需要发送400个HTTP响应代码,如果任何字段不可解析,返回状态代码将为422。例如,post请求可以是: Dto类提供如下:, 这是发出POST请求的控制器, 如果“金额”是,比如说,“sfdfd”,这不是大小数,我们应该提供422。但如果“金额”为“-12.3343”,则这是约束验证错误,但数据有效且可分析。所以我们不能拥有422。 这是我的异常

  • 问题内容: 我们正在使用Spring MVC + Spring Security + Hibernate创建一个RESTful API。该API可以生成JSON和HTML。做好弹簧安全性的错误处理让我头疼: 身份验证可以通过多种方式进行:BasicAuth,通过POST请求中的不同参数以及通过Web登录。对于每种身份验证机制,在Spring Security xml配置的名称空间元素中声明了一个过

  • 本文向大家介绍Java自定义异常类的实例详解,包括了Java自定义异常类的实例详解的使用技巧和注意事项,需要的朋友参考一下 Java自定义异常类的实例详解 为什么要自己编写异常类?假如jdk里面没有提供的异常,我们就要自己写。我们常用的类ArithmeticException,NullPointerException,NegativeArraySizeException,ArrayIndexout