自定义异常类中的super(msg)的作用
在Java中,super(msg)
是子类调用父类构造方法的语法。具体到这段代码:
package com.sky.exception;public class DeletionNotAllowedException extends BaseException {public DeletionNotAllowedException(String msg) {super(msg);}}
解释 super(msg)
:
DeletionNotAllowedException
继承自BaseException
。super(msg)
表示:调用父类BaseException
中带有一个String
类型参数的构造方法。- 这样做的目的是:把异常信息
msg
传递给父类,让父类来负责存储和处理这个异常信息。
举个例子:
假设 BaseException
是这样的:
public class BaseException extends RuntimeException {public BaseException(String msg) {super(msg);}
}
那么当你写:
throw new DeletionNotAllowedException("该数据已被引用,无法删除");
实际上会沿着继承链:
DeletionNotAllowedException -> BaseException -> RuntimeException -> Exception -> Throwable
最终由 Throwable
把 "该数据已被引用,无法删除"
保存起来,供后续 getMessage()
方法获取。
总结一句话:
super(msg)
就是把异常信息传递给父类构造方法,让父类帮你“记下来”,这样异常信息才能被正确保存和使用。