类中的Java自定义异常处理
我正在使用netbeans,并创建了以下异常类:类中的Java自定义异常处理,java,exception,Java,Exception,我正在使用netbeans,并创建了以下异常类: public class VehicleException extends Exception{ private String matricula; private Calendar dataMatricula; private ModelVehicle model; private int causa; public VehicleException(int causa, Object val
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 "";
}
}
在我的课程“Vehicle”中,我遇到了这种异常:
公共级车辆{
私有弦矩阵;
私家车模型;
私人日历数据矩阵;
公共车辆(字符串矩阵、模型车辆模型、日历数据矩阵)抛出VehicleeException{
刚毛母质(母质);
setDataMatricula(dataMatricula);
setModelVehicle(模型);
}
公共字符串getMatricula(){
回归矩阵;
}
公共模型车辆getModelVehicle(){
收益模型;
}
公共日历getDataMatricula(){
返回数据矩阵;
}
公共最终无效setMatricula(字符串matricula)抛出VehicleeException{
if(matricula==null | | matricula.compareTo(“”==0){
抛出新车辆异常(2,Matcula);
}
这个。matricula=matricula;
}
public void setModelVehicle(ModelVehicle model)抛出VehicleeException{
if(model==null){
抛出新车异常(3,车型);
}
否则{
this.model=模型;
}
}
public void setDataMatricula(日历c)引发车辆异常{
如果(c==null){
抛出新车辆异常(1,c);
}
this.dataMatricula=c;
}
当我尝试编译时,在setter方法中,我得到以下消息:
错误:未报告的异常;必须捕获或声明为
被抛弃
抛出新车辆异常(2,matricula);C:\Users\Ivan\Desktop\Examen
isidrer\M03-uf5\Exmaenm03uf5\src\info\infomila\Vehicle.java:55:错误:
未报告的异常;必须捕获或声明为
扔
抛出新车辆异常(3,型号);C:\Users\Ivan\Desktop\Examen
isidrer\M03-uf5\Exmaenm03uf5\src\info\infomila\Vehicle.java:64:错误:
未报告的异常;必须捕获或声明为
扔
抛出新车辆异常(1,c)
我不太明白为什么会发生这种情况,显然setter方法有一个“抛出VehicleeException”。VehicleeException的构造函数本身可以抛出一个异常:
public VehicleException(int causa, Object valor) throws Exception {
^^^^^^^^^^^^^^^^
这意味着您的调用范围需要从构造函数处理/重新抛出该异常,或者您可以选择这样做,而不是抛出它
default:
super.addSuppressed(new Exception("Utilització errònia en construir VehicleException. Causa: " + causa));
VehicleeException
的构造函数本身可以引发异常:
public VehicleException(int causa, Object valor) throws Exception {
^^^^^^^^^^^^^^^^
这意味着您的调用范围需要从构造函数处理/重新抛出该异常,或者您可以选择这样做,而不是抛出它
default:
super.addSuppressed(new Exception("Utilització errònia en construir VehicleException. Causa: " + causa));
从传递给
异常
构造函数的消息中,我通常倾向于在这里抛出运行时异常
。@Izruo如果他们抛出运行时异常
,那么将永远看不到车辆异常
,因此这允许两个异常都出现在错误日志中。我的观点是异常
不是RMALY被抑制
,当它是由于引发其他一些异常
而导致的。当程序员在其代码中使用错误的常量时(在本例中,这是引发异常
)将引发此异常。但说到日志记录,这里有一个要点。从传递给异常
构造函数的消息中,我通常倾向于在这里抛出运行时异常
。@Izruo如果他们抛出运行时异常
,那么将永远看不到车辆异常
,因此这允许两个异常都出现在er中ror日志。我的观点是,由于抛出其他异常
而导致的异常
通常被抑制。当程序员在其代码中使用错误的常量时(在本例中是抛出异常
),将抛出此异常.但是说到日志记录,你有一个要点。