java中如何能知道应该捕获什么样的异常

我怎么知道应该捕获什么样的异常? 马克-to-win:如上例1.1:开始没加try时,程序崩溃,系统打印的是如下的错误,Exception in thread "main" java.lang.ArithmeticException: / by zero at Test.main(Test.java:4),马克-to-win: 所以我们就该捕获ArithmeticException.见下例:1.1.3。

马克- to-win:马克 java社区:防盗版实名手机尾号: 73203。
例:1.1.3-本章源码

public class Test {
    public static void main(String[] args) {
        try
        {
            int userInput=0;
            int I = 6 / userInput;
        }
        catch(ArithmeticException e)
        {
            System.out.println(e);
        }
        System.out.println("马克-to-win:优雅结束");
    }
}

输出结果:

java.lang.ArithmeticException: / by zero
马克-to-win:优雅结束