Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Javaでマサカリ投げてみた

7,040 views

Published on

JJUG CCC 2015 Fall の懇親会で行ったライトニングトークの資料です。

解説記事を書きました!
http://d.hatena.ne.jp/chiheisen/20151129/1448817036

使用したソースコードはこちら
https://github.com/YujiSoftware/Masakari4j

Published in: Technology
  • Follow the link, new dating source: ❤❤❤ http://bit.ly/2ZDZFYj ❤❤❤
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Dating for everyone is here: ♥♥♥ http://bit.ly/2ZDZFYj ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Javaでマサカリ投げてみた

  1. 1. Javaでマサカリ 投げてみた! @YujiSoftware
  2. 2. 「マサカリを投げる」とは • 技術的な内容に対し 容赦のない厳しい指摘をすること – 投げられた相手が指摘を冷静にキャッチできず、 大きなダメージを受けてしまう危険な行為 • これをJavaで表現すると、こうなります
  3. 3. マサカリ投げる throw new Masakari();
  4. 4. このコードの問題点 • コンパイルが通らない – Javaで投げられるのは例外だけ (正確にはThrowableを継承したクラスだけ) – ただのオブジェクトであるマサカリは投げられな い…
  5. 5. しかし、私はマサカリを投げたい
  6. 6. どうしても投げたい
  7. 7. なんとしてでも投げたい!!
  8. 8. そこで、こんな方法で コンパイルしてみました
  9. 9. コンパイル方法 1. Masakariクラスを、Exceptionを継承した状態 でコンパイル public class Masakari extends Exception { }
  10. 10. コンパイル方法 2. throw new Masakari(); を含んだMainクラス をコンパイル public static void main(String... args) throws Exception { Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler()); try { throw new Masakari(); } catch (Throwable t) { System.out.println("Catch Masakari."); } } このコードは、マサカリがスローされたとき、 「Catch Masakari. 」または「Unhandled Masakari.」(コードは省略)と出力
  11. 11. コンパイル方法 3. Masakariクラスを、Exceptionの継承を削除し た状態に戻し、再度コンパイル public class Masakari { }
  12. 12. コンパイル結果 • 2つのクラスができあがる Masakariクラス(ただのオブジェクト) Mainクラス(Masakariをスローするクラス)
  13. 13. それでは実行してみましょう!
  14. 14. C:Masakari4j>java Main
  15. 15. C:Masakari4j>java Main Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.VerifyError: Bad type on operand stack Exception Details: Location: Main.main([Ljava/lang/String;)V @25: athrow Reason: Type 'Masakari' (current frame, stack[0]) is not assignable to 'java/lang/Throwable' Current Frame: bci: @25 flags: { } locals: { '[Ljava/lang/String;' } stack: { 'Masakari' } Bytecode: 0x0000000: bb00 0259 b700 03b8 0004 b200 0512 06b6 0x0000010: 0007 bb00 0859 b700 09bf 4cb2 0005 120b 0x0000020: b600 07b2 0005 120c b600 07a7 000e 4db2 0x0000030: 0005 120c b600 072c bfb1 Exception Handler Table: bci [10, 26] => handler: 26 bci [10, 35] => handler: 46 Stackmap Table: same_locals_1_stack_item_frame(@26,Object[#24]) same_locals_1_stack_item_frame(@46,Object[#24]) same_frame(@57) at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Unknown Source) at java.lang.Class.privateGetMethodRecursive(Unknown Source) at java.lang.Class.getMethod0(Unknown Source) at java.lang.Class.getMethod(Unknown Source)
  16. 16. なんかわけわからんエラー出た ( ̄▽ ̄;)
  17. 17. 何が起きた? •VerifyErrorが起きた – VerifyError とは • クラスファイルの内部矛盾またはセキュリティー上の 問題があることを検出した場合にスローされるエラー – 要するに… • マサカリを投げようとしているのがJava VMにばれて実 行できなかった
  18. 18. Javaでマサカリ 投げられない…
  19. 19.
  20. 20. …って思うでしょ?
  21. 21. 最終手段! •-noverifyオプション – VerifyErrorを抑止! • これを付けて実行すると…!
  22. 22. C:Masakari4j>java –noverify Main Unhandled Masakari.
  23. 23. Javaでマサカリ 投げられる!
  24. 24. そして、コードをよく見ると… • try...catch… がある!? – にもかかわらず、catchブロックを通らなかった! public static void main(String... args) throws Exception { Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler()); try { throw new Masakari(); } catch (Throwable t) { System.out.println("Catch Masakari."); } }
  25. 25. Javaでマサカリ Catchできない! つまり
  26. 26. これぞまさしくマサカリ!
  27. 27. いかがだったでしょうか 最後に大事なことをお伝えします
  28. 28. 注意事項 • マサカリを投げる行為は大変危険です よい子のみんな まねしないでね!
  29. 29. Javaでマサカリ 投げてみた! @YujiSoftware
  30. 30. 本LTに対するマサカリは 受け付けていません! ご了承ください やさしく教えてください (*^-^*)

×