Android studio捕获不到错误并闪退

问题遇到的现象和发生背景

Spinner.setSelection(3)报错直接闪退,Spinner.setSelection(3,false)可以被catch到而且不闪退是为什么

问题相关代码,请勿粘贴截图
       b1.setOnClickListener(new View.OnClickListener() {
           @Override
            public void onClick(View view) {
               try {
                   a1.setSelection(3);//a1是一个spinner,只有三个选项,position选3会数组越界,这样会闪退

              }catch(Exception e){
                   Toast.makeText(MainActivity.this,"错误",Toast.LENGTH_LONG).show();
               }

            }
        }
       b1.setOnClickListener(new View.OnClickListener() {
           @Override
            public void onClick(View view) {
               try {
                   a1.setSelection(3,false);//a1是一个spinner,只有三个选项,position选3会数组越界,这样不会闪退,而且能被catch到

              }catch(Exception e){
                   Toast.makeText(MainActivity.this,"错误",Toast.LENGTH_LONG).show();
               }

            }
        }

运行结果及报错内容

闪退的时候显示致命错误数组越界,第二个不会报错

public void setSelection(int position, boolean animate) {
    // Animate only if requested position is already on screen somewhere
    boolean shouldAnimate = animate && mFirstPosition <= position &&
            position <= mFirstPosition + getChildCount() - 1;
    setSelectionInt(position, shouldAnimate);
}
@Override
public void setSelection(int position) {
    setNextSelectedPositionInt(position);
    requestLayout();
    invalidate();
}

这两个用法区别很大哦

你看看你的Spinner所用到的数据有多长啊,长度小于4就不行哦