为什么hibernate框架中buildSessionFactory();要用try catch

刚刚学习JAVA,看到try catch语句,有点好奇,
static{
try{
configuration.configure(configFile);
sessionFactory=configuration.buildSessionFactory();

    }catch(Exception e){
        System.err.println("%%%% Error Creating SessionFactory %%%%");
        e.printStackTrace();
    }
    难道sessionfactory会经常创建失败吗?
    为什么定义一个新变量的时候不用try catch
    try{
        int num=10;
    }catch(Exception e){
        System.err.println("Error");
        e.printStackTrace();
    }

有抛出才需要捕获。
为什么buildSessionFactory需要捕获,因为方法声明了异常,意思就是这个buildSessionFactory方法出现HibernateException异常怎么办,交给调用他的类处理。

public class Configuration implements Serializable {
     public SessionFactory buildSessionFactory() throws HibernateException {
                ……
     }

调用他的方法必须处理,要么try-catch,要么也是throws HibernateException。
简单的赋值不会产生异常的,顶多是编译错误。