Ваш Javascript будет выполняться на клиенте, а не на сервере. Это означает, что foo
не оценивается на стороне сервера, и поэтому его значение не может быть записано в файл на сервере.
Лучший способ подумать об этом процессе - это как будто вы генерируя текстовый файл динамически. Текст, который вы генерируете, становится исполняемым кодом после того, как браузер интерпретирует его. Только то, что вы размещаете между тегами <?php
, оценивается на сервере.
Кстати, создание привычки встраивать случайные фрагменты PHP-логики в HTML или Javascript может привести к серьезному запутанному коду. Я говорю от болезненного опыта.
Хорошо, если какой-то другой Thread вызывает thread.interupt (), пока поток спал, вы получите Exception. И да, вы, вероятно, можете просто попробовать try..catch arround sleep () и игнорировать его;)
Как говорили другие, это вызвано некоторым другим потоком, вызывающим interrupt()
на спящем Thread
объекте, который спал.
Что это означает на простом английском языке, это то, что какой-то другой поток решил для отмены спальной нити. Блок try / catch существует, поэтому вы можете изящно обрабатывать отмену потока и безопасно очищать любые ресурсы или закрывать любую операцию, которую он выполнял правильно.
Если вам действительно не нужно выполните любое из этого, тогда да, вам все равно нужен пустой блок catch. Но это Java для вас ...
Некоторые советы из Java Concurrency in Practice:
blockquote> Не рекомендуется выполнять запросы на прерывание.
- Распространять исключение (возможно, после некоторой очистки по конкретным задачам), что делает ваш метод также прерывистым методом блокировки; или
- Восстановить статус прерывания, чтобы кодекс выше в стеке вызовов мог справиться с ним.
- Только код, реализующий политику прерывания потока, может проглатывать запрос прерывания.
Основной случай - когда кто-то называет Thread.interrupt () в вашем потоке.
Может быть безопаснее выкидывать RuntimeException, если это происходит, когда вы действительно не ожидая этого, но для очень простых случаев вы, вероятно, можете его игнорировать.
Из javadocs :
Класс InterruptedException
Брошено, когда поток ждет, спя или временно приостановлен в течение длительного времени и другой поток прерывает его, используя метод прерывания в классе Thread.
blockquote>Надеюсь, что ответит на ваш вопрос.
Это происходит, когда что-то вызывает прерывание () в потоке. В этой статье Брайана Гетца объясняется механизм прерывания и как вы должны обрабатывать InterruptedExceptions:
«Самый распространенный ответ InterruptedException - проглотить его - поймать и сделать ничего (или, возможно, запишите его, что не лучше) - как мы увидим позже в листинге 4. К сожалению, этот подход отбрасывает важную информацию о том, что произошло прерывание, что может нарушить способность приложения отменить «Если вы поймали InterruptedException, но не можете его восстановить, вы должны сохранить доказательства того, что произошло прерывание [...]. Эта задача выполняется путем вызова прерывания () для «возобновления» текущего потока. »
blockquote>
InterruptedException - проверенное исключение, поэтому, к сожалению, вы не можете просто игнорировать его. В большинстве простых случаев вам не нужно ничего делать в предложении catch, потому что вы уверены, что этого не произойдет.
Из API
Брошено, когда поток ожидает, спящий или в противном случае приостанавливается в течение длительного времени, а другой поток прерывает его с использованием метода прерывания в классе Thread.
blockquote>