这一次是个相当理论性的问题。所以我在Eclipse中使用这个函数:
CsvReader csv = new CsvReader("src/maindroite.csv");因为“未处理的异常类型FileNotFoundException”而无法运行。好的,我知道我必须为文件不存在的情况添加一些东西,在这种情况下,我通常会添加几行来处理异常并丢弃它。但是我的问题是:为什么我需要捕获异常,即使文件确实存在?实际上,为什么我甚至对某些函数有这个例外的东西,而没有其他的呢?
例如,假设我试图运行:
ImageIcon icon1 = new ImageIcon("src/square.jpg");
ImageIcon icon2 = new ImageIcon("src/circle.jpg");其中存在"square.jpg“,但不存在"circle.jpg”。该程序将创建icon1,但不会创建icon2,因为它不能。但是我不需要为图像不存在的情况添加ExceptionHandler。这两种功能有什么区别?
总结一下:
谢谢!
发布于 2012-01-05 18:47:17
当文件确实存在时,为什么我必须添加一个ExceptionHandler?
基本上必须添加它,因为您不能编写这样的条件代码,简而言之,编译器不可能在运行时之前知道该文件是否存在,因此编译器强制yo放置一个/catch块,因为FileNotFoundException是一个 已选中 异常。
为什么我必须为某些函数而不是其他函数添加一个ExceptionHandler?
**NOT*只需将try/catch块添加到抛出检查异常的任何内容,即**NOT*从RuntimeException或Error类继承的任何内容。Error和RuntimeException的子类不检查异常,您可以将try/catch放到编译器不关心的位置。由于ImageIcon的构造函数不抛出任何类型的异常,如果图像不存在,则只返回null,因此不需要执行try/catch块。
https://stackoverflow.com/questions/8747921
复制相似问题