問題タブ [die]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - PHP の die() と exit() の違いは何ですか?
PHPのdie()
と関数の違いは何ですか?exit()
どちらも同じ機能を持っていると思いますが、どちらにも何か違うものがあるとは思えません...それは何ですか?
jquery - jQuery: ライブ クリック イベントのバインドとバインド解除
したがって、私の質問には2つの制約があります。
- クリック イベントで外部関数呼び出しを使用する必要があり、
- 通常のクリック イベントをバインドするのではなく、ライブ クリック イベントを使用する必要があります。
したがって、私の問題は、クリックイベントが発生した後にバインドを解除し、クリックイベントコードが完了したら再バインドしようとしていることです。コードが現在処理中のときに重複したクリックを防ぐためにこれを行っています (ボタンを 2 回または 3 回すばやくクリックできるようにするフェードイン/アウト アニメーションがあるため、コードを 2 回または 3 回実行しますが、これは望ましくありません)。 . 私が使用しているコードは以下のとおりです。
と
私は頭がおかしいのですか、それとも問題なく動作するはずですか? 今のところ、一度クリックすることはできますが、その後はできません。したがって、明らかに die() は機能していますが、何らかの理由でその関数に再バインドされていません。ライブクリックを再バインドするために handleClick() のコードに到達することを確認しました。
何か案は?どんな助けでも大歓迎です。ありがとう。
jquery - jQuery die()指定された1つだけではなくすべての要素を強制終了する
私は、正常な動作である可能性があると思われる特有の問題がありますが、確認する必要があります。<li>
このコードを使用して、ライブクリックイベントをいくつかの要素に接続しています。
ここでは、ブランケットセレクターを使用して、同じライブクリックイベントを<li>
$ list内のすべての要素に接続していることに注意してください。これは、順序付けされていないリストです。私はこのコードを一度呼び出します$(document).ready()
。rightItemSingleClickEvent()は、メソッドの上部にあるライブクリックイベントを実際に強制終了します。これは、クリックに関連付けられたアニメーションがあり、アニメーションの発生中にそれを強制終了して、クリックが重複しないようにしているためです。クリックを強制終了するコードは次のとおりです。
アニメーションが完了したら、クリックイベントを再接続します。
このコードはすべて正常に機能しているようです。クリックするリストアイテムを選択すると、毎回正常に終了して再接続されます(これにより、アニメーション中の重複クリックが防止されます)。しかし、私の問題は、その1つのリストアイテム(<li>
)だけを殺していると思うと、その1つだけでなく、すべてのリストアイテムを殺しているように見えることです。したがって、1つのリスト項目をクリックすると、その機能は引き続き機能しますが(クリックは可能です)、他のすべての項目はクリックできなくなります。<li>
これは、すべてを一度にカバーする包括的なステートメントを介してライブクリックイベントを接続しているという事実と関係があるのだろうかと思います。
では、ライブイベントをそれぞれに<li>
個別に接続する場合、単一のセレクターを使用してすべてを実行するのではなく、機能する可能性がありますか?<li>
シングルでdie()を呼び出すと、その兄弟もすべて殺されるのはなぜかわかりません。
任意の洞察をいただければ幸いです。ありがとう。
明確化: rightItemSingleClickEventのコードをもう少し投稿するように依頼されました。この関数は基本的に、ユーザーがリストアイテムをクリックしたときに何が起こるかを処理します。cssクラスを追加および削除して、クリックとクリック解除をシミュレートしています。また、クリックすると表示され、クリック解除すると非表示になる別のテキストボックスがあります。これは、ライブクリックイベントを再接続する前に完了する必要があるアニメーションです。また、ヘルパー関数を使用してクリックイベントを強制終了して接続していることも指摘しておく必要があります。また、handleNotes()は、ユーザーがクリックを解除したときにテキストボックスのテキストを保存する関数であり、他にもいくつかのことを実行します。この問題に関連しています。しかし、もっと紛らわしいのですが、それでも私のコードは以下に掲載されています。
更新: HTMLに書き込まれるときに、クリックイベントを各リストアイテムに個別に接続するようにコードを変更しましたが、同じ動作が引き続き維持されます。正直なところ、何が起こっているのかわかりません。ただし、包括的なライブ接続ステートメントがなくても、1つのリストアイテムでクリックイベントを強制終了すると、すべてのリストアイテムでクリックイベントが強制終了されます。そして、私のコードの中でライブクリックイベントを殺す場所は1つだけで、それは私が上に投稿した場所です。だから私は完全に途方に暮れています。
更新2:この問題を回避できなかったため、代わりに「:animated」状態をチェックするようにコードを変更し、ライブクリックイベントを強制終了して再接続するというアイデアを放棄しました。ただし、ライブクリックイベントを各リストアイテムに個別に割り当てた場合でも、1つのリストアイテムのkill()がそれらすべてを強制終了する理由を知りたいと思います。
php - PHPとHTMLの統合
HTMLフォーム、PHPロジック、HTMLフッターの順に含むphpファイルがあります。
フォームからページの下部(ただしフッターの前)のいくつかのphp検証ロジックに値を取得しようとしています。<?php VALIDATION LOGIC HERE ?>.
問題は、検証でエラーが検出されると、phpロジックがdie()になるため、HTMLフッターが実行されないことです。
php die();にもかかわらず、HTMLフッターを実行する方法はありますか?...または、HTMLとPHPを統合するためのより良い全体的な方法はありますか?ありがとう!どんな助けでも大歓迎です。
編集:私は実際、データベースに接続しようとしているコードのほぼすべての場所にdie()があります。ユーザーのクレデンシャルが正しい場合、それらは接続します。クレデンシャルが間違っている場合、それはdie()になります。
これは良い習慣であり、die()の使用ですか?私の問題の解決策は、HTMLフッターの処理を続行するためにreturn()INSTEAD OF die()...を使用することだと思われます。
また、mysql_connect()やdie()などの状況があります。HTMLが処理される前にdie()が実行されたときに、残りのHTMLページの処理を続行するにはどうすればよいですか?..mysql_connect()またはreturnとは思わない; 良い習慣は正しいですか?
よろしくお願いします!フィードバックは非常に役に立ちました!
winapi - 一貫して再現可能なmod_perl2/$SIG{__DIE__}バグのトラブルシューティングに役立ちます
これは、Apache 2.2ではmod_perl2、win32ではActiveStatePerl5.10です。
$SIG{__DIE__}
DBIのRaiseErrorフラグをオーバーライドしてオンにします。これは、データベース呼び出しが失敗したときに、ドキュメントのAFAICTがオーバーライドを呼び出す必要があります。ある場合を除いて、ほとんどの場合そうですが、その理由がわかりません。
私のスクリプトにはour $page
変数があり、mod_perl2であるため、次のようにオーバーライドからこれを取得できます。
これは正常に機能します。さて、その中$page
に、DBから戻ってきたときに何か別のことをしたい「許可された」エラー値の配列参照があります。$r->print
DBがこれらのエラーの1つをスローした場合、それをJSONのユーザーフレンドリーなメッセージに変換し、実行を停止します(動作A)。何らかの理由で、代わりにスクリプトに制御を戻します(動作B)。
これが私のスクリプトの主要部分です:
最初の行をコメントアウトすると、通常のエラー(予期しない処理)(動作C)が発生します。これは、発生しているエラーを許可されたエラーのリストに追加していないためです。本当に奇妙なのは、その最初の行を切り取って$SIG{__DIE__}
オーバーライドに貼り付けると、それが機能することです。JSON応答がオーバーライドされ、出力され、{test}
割り当てられる前に実行が停止します(動作A)。見知らぬ人でも、{allowed}
任意の数値セットに設定できます。特に「22007」が含まれている限り、動作Bが発生します。含まれていない場合は、動作Cが発生します。さらに奇妙なことに、実際にオーバーライドを埋めることができます。何でも(警告、への呼び出しCORE::die
、など-コンパイルする限り)そして私はまだ振る舞いBを取得します-オーバーライドにはそれを可能にするコードが含まれていなくても!warn
また、とへの呼び出しの期待される結果が得られずCORE::die
、ログが沈黙しているだけなので、オーバーライドを介して実行パスを手動で追跡することさえできません。
スクリプトを保存するたびにApache2.2を再起動しました。オーバーライドをスクリプト自体と同じスクリプトファイルに移動し、通常のモジュールから外し、モジュールファイル全体をコメントアウトして、再起動しました。
その最初の行を削除するか、「22007」を削除するwarn
とdie
、好きなものをすべて手動でデバッグでき、すべてが期待どおりに機能します。サーバーがリセットされても何も出力されない「22007」についてはどうでしょうか。翻訳マップを除いて、プロジェクト全体のどこにも「22007」への参照はありません。そのファイルから完全に削除して再起動すると、結果に違いはありません。それはあたかもその日の早い段階から私のオーバーライドをキャッシュしたかのように振る舞い、決して忘れることはありません。ランダムなクエリ文字列を追加でき、結果も変わらないため、ブラウザのキャッシュの問題でもありません。
これは私が今までに経験した中で最も奇妙で最も苛立たしいmod_perl2の経験であり、私はアイデアを使い果たしました。誰かヒントはありますか?私が考えることができる唯一のことは、それがキャッシングの問題であるということです、それでも私はサービスを数え切れないほど再起動しました。
一日の終わりだったので、サーバーコンピュータを完全に再起動してみようと思いましたが、それでも何も変わりませんでした。サーバーを再起動する前に、{state}
これに割り当てられている唯一の行を変更しました。
それでも、その後の出力は{test}
「22007」でした。これは、私がそのままにしておいた場合にのみあるはず= $errno
です。
たとえば、キャッシングを実行するリバースプロキシであったとしても、要求が異なる可能性があるため、この状況は私には意味がありません。サーバーを完全に再起動した後も、コードに存在しない値を割り当てるにはどうすればよいでしょうか。つまり、$SIG{__DIE__}
完全に再起動した後、ファイルに存在しなくなった古いオーバーライドをどのように使用できるでしょうか。
更新: 許可されたエラーを「42601」に変更し、db呼び出しをに変更しようとしました'select'
。これにより、そのエラーコードが生成されますが、変換マップには追加されませんでした。それでも動作Bが得られ、「42601」に設定{state}
されているため、「22007」に固有のものではありません。に入れられたエラーコードは{allowed}
、そのエラーが実際に発生した場合、古いバージョンのオーバーライドを実行しています。にないエラーが発生し{allowed}
、現在のバージョンが実行されます。{allowed}
しかし、オーバーライドに到達する前に、現在のエラーがにあるかどうか、またはそれが何かを意味するかどうかをどのように知るのでしょうか?{allowed}
(オーバーライドは、現在のエラーに対してgrepされる唯一の場所であるためです。)
php - PHP: die/exit の複数のコマンド
エラーが発生した場合、彼に2つのことをしてもらいたい.
- echo nl2br($qVraagOp);
- mysql_error();
だから私は思った:
これら 2 つのことを実行する関数を作成し、それを呼び出すことができますが、それは少し冗長です。他の方法はありますか?
マティ
perl - perlで例外タイプをテストするにはどうすればよいですか?
eval
スクリプトまたはブロックが終了する原因となった例外の種類を確認するにはどうすればよいですか? エラーの種類と、例外が発生した場所を知る必要があります。
perl - Perl:死なずにエラーをキャッチ
エラー処理で遊んでいて、少し問題が発生しました。DBIモジュールを使用してデータベースに接続します。
エラー時に呼び出すサブルーチンを使用して、独自のエラー処理を行います。
自分のダイをキャッチして問題なく処理できますが、データベース接続に失敗すると、DBIモジュールは明らかに自分のダイを出力します。
DBI connect(...)が失敗しました:ORA-12154:TNS:指定された接続識別子(DBDエラー:OCIServerAttach)を解決できませんでした...
これをどうやって捕まえるの?
$SIG{__DIE__}
私はそのように使ってみました:
これは私のメインファイルの一番下にあります。このファイルでは、自分のモジュールで使用できる接続サブルーチンも呼び出します。また、このコードをモジュールの下部に配置しようとしましたが、それでもエラーが出力されます。
エラー:
その前に。
php - PHP内でPerlスクリプトを実行し、エラーメッセージをキャプチャする方法は?
私は次のようなPerlスクリプトを実行しようとしています:
Perlスクリプトが失敗すると、「die」を使用して終了し、エラーメッセージを出力します。手動で実行するとエラーメッセージが表示されますが、PHPでキャプチャできません。
私は次のことを試みましたが成功しませんでした:
何か案は?
perl - Perl コンパイラは、コードに未チェックの例外があるかどうかを教えてくれますか?
Perl で、メソッドがエラーをスロー (または終了) できることを宣言する方法はありますか?
編集:私が最も興味を持っているのは、コードのどこかにチェックされていない例外があることをコンパイラまたは IDE に通知させる方法です。
Java では、メソッドが例外を処理したりスローしたりする方法が大好きでした。メソッドの署名により、「myException をスロー」することができるため、優れた IDE/コンパイラは、コードのどこかでこのメソッドを使用する場合、例外をチェックするか、例外をさらに「スロー」するように関数を宣言する必要があることを認識します。 .
Perl で同様のものを見つけることができません。私の同僚は、間違った入力で「死ぬ」メソッドを書きましたが、eval-if($@) するのを忘れています...もちろん、ユーザーがアプリケーションを実行しているときにのみエラーが発見されました。
(もちろん、Perl でこの種のものを見つけることができる既存の IDE があるかどうかは疑問ですが、少なくとも perl -cw でできるはずですよね?)