目录

​throw后报错,找不到报错处​

​自定义Exception异常​

​printStackTrace()方法的作用​


throw后报错,找不到报错处

关键字:throw  是一种控制程序流程的特殊方法而已。没有相应的catch的话,可以中止当前的方法继续执行。

关键字:throws  声明方法时候,如果不声明throws的话,那么一般的Exception都要在这个方法中终结,也就是说一定要有相应的catch处理,否则编译时会产生错误。如果方法声明了throws的话,可以交给上一级方法去处理。以此类推。但是有些Exception可以不加捕捉,编译也会通过。继承Exception类,可以自己定义Exception,对于特定的状态,

所以你使用了throws之后是没有catch的,实在上层的调用中有catch。  这样有时候不直观,报错还得去上层打bug断点。

一般还是try、catch  ,能直接捕捉到。便于使用。

关键字:try、catch  用个形象的比喻,如果说throws相当于职业介绍中介的话,那try和catch就是一对倒霉的打工仔。很有意思,throws只是告诉编译器--方法可能产生的异常问题,然后把问题处理抛给try和catch。

他们一个负责发现异常关系,一个负责异常捕获。

自定义Exception异常

package com.example.ceshi;

/**
* @ProjectName: ceshi
* @Package: com.example.ceshi
* @ClassName: ServiceException
* @Description: java类作用描述
* @Author: 作者名
* @CreateDate: 2020/7/23 0023 下午 2:33
* @UpdateUser: 更新者:
* @UpdateDate: 2020/7/23 0023 下午 2:33
*/

public class ServiceException extends Exception {

/**
*
*/
private static final long serialVersionUID = 5717888100550404100L;

public ServiceException(String str){
super(str);
}

public ServiceException() {
super();
}

public ServiceException(String str, Throwable t) {
super(str, t);
}

public ServiceException(Throwable t) {
super(t);
}
}


捕获Text();设置错误信息,注解有解释

try {

Test(); //捕获异常
} catch ( ServiceException e ) {
e.printStackTrace();
// 获取错误信息,以dialog形式进行弹窗;
waitCloseAlert("执行线程异常,原因:"+e.getMessage());

}
}

public static void Test()throws ServiceException
{
throw new ServiceException("怎么说"); //设定错误信息

}

/**
* 关闭等待警告提示
* */
public void waitCloseAlert(final {
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
if (processDialog != null && processDialog.isShowing()) {
processDialog.dismiss();
}
showAlertDialog(message,null,R.drawable.ic_launcher_background,null);
}
});
}
public void showAlertDialog(String title,String message,Integer icon,final{
AlertDialog.Builder builder=new AlertDialog.Builder(this);
if(title!=null){
builder.setTitle(title);
}
if(message!=null){
builder.setMessage(message);
}
if(icon!=null){
builder.setIcon(icon);
}
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int {
if(focusView!=null){
focusView.requestFocus();
}
}
});
AlertDialog dialog =


printStackTrace()方法的作用

直接上两张图片:

使用:printStackTrace

throw后报错,找不到报错处。throw、throws 、try/catch 作用区别,自定义Exception异常,printStackTrace()方法的_错误信息

不使用:printStackTrace

throw后报错,找不到报错处。throw、throws 、try/catch 作用区别,自定义Exception异常,printStackTrace()方法的_ico_02

解释:根据名字就知道,使用的话,才能在log中打印出报错的位置和报错位置顺序路径