/*
* 拦截器
* 步揍:创建一个类:实现HandlerInterceptor,由于系统内部已经实现了三个办法了,因此我们就重写该办法
*
* preHandle(xxx):执行目标办法Controller类里面的办法前执行这个办法
* postHandle(xxx):执行目标Controller类里面的办法后执行这个办法再执行jsp页面的跳转
* afterCompletion(xxx):jsp页面跳转后再执行这个办法
*
*<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/interceptor/**"></mvc:mapping>
* <!-- 也就是里面的办法会拦截
/user/***
也就是congtroller下user类所有办法都拦截-->
<!-- exclude:排除
也就是里面的办法不会拦截
/user/***
也就是congtroller下user类所有办法都不拦截
-->
<!-- <mvc:exclude-mapping path=""/>-->
*</mvc:interceptor>
*
*</mvc:interceptors>
*
*
*
* */
public class RewriteInterceptor implements HandlerInterceptor {
/*
* previous:前
* post_:后
* preHandle:表示浏览器请求到controller之前执行
* 也就是先执行这个办法再执行控制器Cntroller办法
*
* return true:表示放行,只要放行了,系统就执行这个办法后再执行控制器办法,
*
* 不放行,它就执行这个办法,但不执行控制器办法
* */
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
return false;
}
/*
* previous:前
* post_:后
* postHandle:表示执行了控制器办法后再执行这个办法再执行jsp
* controller办法---->postHandle办法---->再跳转到jsp页面
*
* 一般用于传输数据或者什么,跳转页面也可以,也就是controller办法跳转到success
* 但是再这个办法中请求转发到error.jsp,.它就不会跳转到success。jsp页面
* */
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
/*
* afterCompletion:表示跳转到目标jsp页面再执行这个办法
* 一般用于释放资源和流
*
*
* */
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
异常处理
/*
<!-- 配置异常处理器就跟spring配置一个bean一样-->
<bean id="exceptionResolver" class="com.sise.exception.ExceptionResolver"></bean>
* 这个是异常处理器必须实现HandlerExceptionResolver,
* 因为你实现了这个类的resolveException(。。。)办法,只要你再springmvc.xml配置了这个异常处理器
* 抛出的异常经过前端控制器后,异常就不会直接抛出到浏览器,而是抛到这个类,也就是异常处理器类
* 从而处理异常,只要异常抛出到这个类必须实现resolveException()这个办法
* 从而我们就需要再这个办法中实现对异常的操作
*
*
* */
public class ExceptionResolver implements HandlerExceptionResolver {
/*
* Object handler:代表的是异常处理器的对象,很少用到
*
* Exception ex:代表的是抛出的异常,一般我们都会判断是不是我们所配置的自定义的异常信息
* */
@Override
public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object handler, Exception ex) {
DefineException e = null;
System.out.println("resolveException....");
/*
*instanceof
instanceof是Java中的二元运算符,左边是对象,右边是类;
* 当对象是右边类或子类所创建对象时,返回true;否则,返回false
* https://blog.csdn.net/kuangay/article/details/81563992 *
* */
//这个就是判断这个异常是不是我们自定义的异常,如果是我们就强转成自定义异常类对象,
// 因为我们不知到ex是自定义异常类或者自定义异常类的子类创建,所以我们必须强转
if (ex instanceof DefineException) {
e = (DefineException) ex;
} else {
//如果得到的异常不是自己自定义的异常类的信息,那么我们就自己创建一个
e = new DefineException("系统维护者...");
}
ModelAndView mv = new ModelAndView();
mv.addObject("error",e.getExceptionMsg());//private String exceptionMsg;
mv.setViewName("error");
return mv;
}
@Controller
@RequestMapping("/exceptionController")
public class ExceptionController {
@RequestMapping("/testDefineException")
public String testDefineException() throws DefineException {
System.out.println("testDefineException.....进行中");
//Ctrl+alt+T快速包裹代码,if while try catch等
try {
int i=1/0;
} catch (Exception e) {
// e.printStackTrace();
// System.out.println("e.getMessage()="+e.getMessage());//e.getMessage()=/ by zero
// System.out.println("e.getStackTrace()="+e.getStackTrace());//e.getStackTrace()=[Ljava.lang.StackTraceElement;@2d118303
// System.out.println(e.toString());//java.lang.ArithmeticException: / by zero
System.out.println(e.fillInStackTrace());
throw new DefineException(e.getMessage());
}
return "success";
}
}
/*
* Copyright 1999-2020, CSDN.NET, All Rights Reserved
weixin_38659482
关注
常见的java Exception类型 转载
2018-08-08

weixin_38659482 
码龄3年
关注
一般面试中java Exception(runtimeException )是必会被问到的问题
常见的异常列出四五种,是基本要求。更多的。。。。需要注意积累了
常见的几种如下:
NullPointerException - 空指针引用异常
ClassCastException - 类型强制转换异常。
IllegalArgumentException - 传递非法参数异常。
ArithmeticException - 算术运算异常
ArrayStoreException - 向数组中存放与声明类型不兼容对象异常
IndexOutOfBoundsException - 下标越界异常
NegativeArraySizeException - 创建一个大小为负数的数组错误异常
NumberFormatException - 数字格式异常
SecurityException - 安全异常
UnsupportedOperationException - 不支持的操作异常
算术异常类:ArithmeticExecption
空指针异常类:NullPointerException
类型强制转换异常:ClassCastException
数组负下标异常:NegativeArrayException
数组下标越界异常:ArrayIndexOutOfBoundsException
违背安全原则异常:SecturityException
文件已结束异常:EOFException
文件未找到异常:FileNotFoundException
字符串转换为数字异常:NumberFormatException
操作数据库异常:SQLException
输入输出异常:IOException
方法未找到异常:NoSuchMethodException
Java.lang.AbstractMethodError
抽象方法错误。当应用试图调用抽象方法时抛出。
java.lang.AssertionError
断言错。用来指示一个断言失败的情况。
java.lang.ClassCircularityError
类循环依赖错误。在初始化一个类时,若检测到类之间循环依赖则抛出该异常。
java.lang.ClassFormatError
类格式错误。当Java虚拟机试图从一个文件中读取Java类,而检测到该文件的内容不符合类的有效格式时抛出。
java.lang.Error
错误。是所有错误的基类,用于标识严重的程序运行问题。这些问题通常描述一些不应被应用程序捕获的反常情况。
java.lang.ExceptionInInitializerError
初始化程序错误。当执行一个类的静态初始化程序的过程中,发生了异常时抛出。静态初始化程序是指直接包含于类中的static语句段。
java.lang.IllegalAccessError
违法访问错误。当一个应用试图访问、修改某个类的域(Field)或者调用其方法,但是又违反域或方法的可见性声明,则抛出该异常。
java.lang.IncompatibleClassChangeError
不兼容的类变化错误。当正在执行的方法所依赖的类定义发生了不兼容的改变时,抛出该异常。一般在修改了应用中的某些类的声明定义而没有对整个应用重新编译而直接运行的情况下,容易引发该错误。
java.lang.InstantiationError
实例化错误。当一个应用试图通过Java的new操作符构造一个抽象类或者接口时抛出该异常.
java.lang.InternalError
内部错误。用于指示Java虚拟机发生了内部错误。
*
*
* */
版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!
常见资源合集和破解 fmvvvteih...