【Java】Exceptionを強制throwさせて絶対そこで処理を中断させる
「とにかく何が何でもそこから先の処理にいってほしくない」という場合、
処理を強制的に中断させる目的で無条件にExceptionをthrowするようなコーディングするとコンパイルエラーになる。
ただこれにちょっと手を加えることで、誰がどう見ても明らかに絶対そこで落ちるにも関わらず
結果的に強制処理中断するロジックとして成立させることができる。
「とにかく何が何でもそこから先の処理にいってほしくない」という場合、
処理を強制的に中断させる目的で無条件にExceptionをthrowするようなコーディングするとコンパイルエラーになる。
ただこれにちょっと手を加えることで、誰がどう見ても明らかに絶対そこで落ちるにも関わらず
結果的に強制処理中断するロジックとして成立させることができる。
あるテーブルをつくる(Createする)とき、既存テーブルの項目定義情報をそのまま流用したいときがある。
そのとき、いちいち流用したいテーブルの項目定義調べてCreate文書くのが面倒だったりするので、
Select+Createの要領で、かつ「絶対に結果が返ってこない条件」を意図的に書くことで、
テーブルの項目定義を簡単に流用することができる。
正直個人的にあんまり区別つけずに使っていたがなんとなくわかってきたので備忘的にメモ
UNIXで適当な環境変数「var」を用意してそいつを使う場合、
var="aaa"echo $var ←①
echo ‘$var’ ←②
としたとき、①と②は結果が違う。
$ aaa ←① $ $var ←②
ってなる。
つまり②は評価してほしい変数の中身ではなく評価式(っていうの?よくしらんが)がそのまま出る。
シングルクォーテーションで囲うと、中に変数を書こうが、書かれた文字列をそのまま扱うという動きをするのだ。
(今さらながら思い知った)
javascriptの文字列変数にソースコード上でそれとわかるような形で改行いれるとページ全体がなんかおかしなことになる。
少なくとも、その変数使ってるjavascriptは動かなくなるようだ。
まあ普通に考えるとそういうもんだろう。
個人的な感覚でいうと、変数に固定の文字列埋め込むケースではコーディングミス(誤記、というか)以外に考えられらない。
だから普通発生しないはずである。
ただ実際に発生して困ったので備忘録として残す。
input type="file"でファイルを選択すると、選択されたファイルが実際に位置しているローカルディスクのフルパスとは違うパス値として自動的にC:\fakepath\(選択したファイル名)に変換されることがある。
ググってみると昨今のブラウザのセキュリティ仕様で勝手にそういう風に変換されるらしい。
ただこれはブラウザ毎にも少し異なる動きをするし、ローカルのHTMLを直接ブラウザで開いた場合やサーバ上に存在するHTMLを開いた場合でも異なる。
実験して分かった範囲をまとめてみる。
Servletでファイルダウンロードさせる実装のメモ
と、ダウンロードファイル名に関するちょっとした実験の結果
ダウンロードの動きを取るかどうかは、最終的にはブラウザに依存するようだが、
レスポンスヘッダ「Content-Disposition」に「attachment」をいれてやり、
かつファイルの種類によって適切なContent-typeを指定することで、
ダウンロードの動きになるようである。
INPUTでTYPE=TEXTの場合に設定するMAXLENGTHプロパティによる、
最後の文字の入力制御のされ方がブラウザによって違うようだ。
今までいくつかのシステム開発に携わってきて、それらは様々なプログラムで構成されているわけだが、
ソースコードの主要な部分、つまり変数とかメソッド名とかテーブル名とか、その辺は基本的に半角英数記号で記述されるので、
まあ、システム都合にも寄るんだろうけど、基本的に「日本語を無理やり英語にした」っていうのがスゴク多い。
例えば「受注金額」という項目があった場合、
Javaで定義する変数は「juchu_kingaku」とかだし
テーブル項目の物理名は「JUCHU_KINGAKU」なわけだ。
俺みたいな英語が全然できない人間からするとむしろこういうほうがわかりやすいんだけども、
グローバル化が叫ばれる昨今、本来はこういうのはよくないのかもしれないなと、なんとなくふと思った。
OracleでNUL(UnicodeでいうとU+0000、制御コード)の後ろに文字列結合すると、結合した文字列が消滅するらしい。
要するにNULの後ろに文字をくっつけることができない。
そういうもんなのか?
なんとなく、まあ、気持ちはわからんでもないけどそういうこと勝手にやるなよなあ~って思う。
俺だけ?