Примером этого исключаемого исключения является: Когда вы пытаетесь проверить что-то, это null.
Например:
string testString = null; //Because it doesn't have a value (i.e. it's null; "Length" cannot do what it needs to do)
if (testString.Length == 0) // Throws a nullreferenceexception
{
//Do something
}
Время выполнения .NET исключение NullReferenceException при попытке выполнить действие над чем-то, что не было инстанцировано, т.е. код выше.
По сравнению с ArgumentNullException, которое обычно выбрано как защитная мера, если метод ожидает, что то, что происходит
Дополнительная информация находится в C # NullReferenceException и Null Parameter .
javadoc класса File
описывает класс как:
Абстрактное представление имен файлов и каталогов.
blockquote>
File
- это только представление пути, с несколькими методами, относящимися к файловой системе (например,exists()
) и обработкой каталога, но фактические потоковые ввод и вывод выполняются в другом месте. Потоки можно открывать и закрывать, файлы не могут.(Мое личное мнение заключается в том, что довольно неудачно, что Sun затем создала
RandomAccessFile
, вызывая много путаницы с его непоследовательным наименованием.)
java.io.File
не представляет файл open , он представляет собой путь в файловой системе. Поэтому использование метода close
на нем не имеет смысла.
На самом деле этот класс был неправильно назван авторами библиотеки, его следует называть как Path
.
Предположим, у вас есть файл f = новый файл («SomeFile»); f.length (); Вам не нужно закрывать файлы, потому что его jsut представляет путь. Вы должны всегда рассматривать возможность закрытия только чтения / писателей и потоки информации.
BufferedReader можно открыть и закрыть, но файл никогда не открывается, он просто представляет путь в файловой системе.
По сути, файл произвольного доступа обертывает входные и выходные потоки для управления произвольным доступом. Вы не открываете и не закрываете файл, вы открываете и закрываете потоки в файл.