NullPointerException
s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException
. Они наиболее распространены, но другие способы перечислены на странице NullPointerException
javadoc.
Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException
, be:
public class Example {
public static void main(String[] args) {
Object obj = null;
obj.hashCode();
}
}
В первой строке внутри main
я явно устанавливаю ссылку Object
obj
равной null
. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException
, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.
(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)
Safari 1.3 + , Opera 9.2 + , Konquerer, и IE8 вся поддержка это, по крайней мере до некоторой степени.
Firefox по-видимому все еще не делает.
я пытаюсь использовать page-break-inside директиву CSS, класс которой быть присоединен к тегу Div или тегу таблицы (я думаю, что это может только работать над элементами блока, в этом случае это должна была бы быть таблица).
Во-первых, нет никакой потребности предположить. Только посмотрите спецификация , и Вы будете видеть, что она действительно только относится к элементам блочного уровня.
, Во-вторых, <div>
элементы являются обычно элементами блочного уровня, таким образом, нет никакой проблемы, применяющейся page-break-inside
к <div>
элемент.
Наконец, Вы не должны переносить его в @media
. Вам только нужно @media
, если Вы хотите применить независимые от среды правила только к одному носителю, например, если Вы хотите использовать display: block
только для одного носителя. В этом случае Вы не должны скрывать те правила от других медиа, потому что они будут только относиться к разбитым на страницы медиа так или иначе.
Safari 1.3 и более поздних версий (не знаю насчет 4) не поддерживает перенос страницы внутрь (попробуйте или посмотрите здесь: http: / /reference.sitepoint.com/css/page-break-inside). Ни Firefox 3, ни IE7 (не знаю о 8).
В практическом смысле поддержка этого атрибута НАСТОЛЬКО непостоянна, на данном этапе нет смысла использовать его вообще. Вам повезет, если хотя бы у 10% ваших посетителей есть браузеры, которые могут это поддерживать.
Я использовал решение, добавив
page-break-after: always
к определенным div или добавив " page-breaker "div в том месте, где вам нужны разрывы. Я знаю, что это довольно неуклюжее, потому что это не совсем то, что вы хотите, и приводит к тому, что контент не достигает нижней части распечатанной страницы, но, к сожалению, лучшего решения нет (докажите, что я ошибаюсь!).
Другой подход - создать таблицу стилей, которая удаляет все посторонние элементы ( display: none
) и заставляет основной контент перемещаться в один основной столбец. По сути, превратите его в одностолбцовый текстовый документ.
Наконец, избегайте float и columns при стилизации для принтеров, это может сделать IE (и FF) дурацким.