Q:例外処理(try~catch文、throw)は一体どのタイミングで使うものですか?
 
A:
プログラマが予見できないエラーがあります。
例えば、ファイルにアクセスしようとしたら削除されていた。
インターネットにアクセスしようとしたらネットワークが切断されていたなど枚挙にいとまがありません。
そんな時に無様にプログラムを途中で中断させないために例外処理はあるのです。
 
Q.コレクションクラスが何なのかよく分かりません。
 
A:
コレクションクラスを一言でいうと可変長の配列です。
実は実務では配列を使うことはほとんどなくてコレクションクラスを使います。
※配列を使うのは本当に速度が求められる時くらいです。
コレクションクラスには配列にはない便利な機能が揃っていますので、ぜひ研究してみてください。
 
Q.「staticでないメソッド 〇〇をstaticコンテキストから参照することはできません」というエラーが出ます
 
A:
おそらくメインメソッドから同一クラスにあるインスタンスメソッドを呼び出したのではないでしょうか?

インスタンスメソッドはインスタンスを作ってからインスタンス名.メソッド名で呼び出します。
一方でスタティックメソッドはインスタンスを作らずにクラス名メソッド名で呼び出します。
スタティックメソッドは便利な機能を実現するユーティリティクラスによく見られます。
例えば、Mathクラスとか。
Mathクラスのrandom()メソッドはインスタンスを作らずに実行できます。
逆に、Math⁼数学のインスタンス(実態)とは何かを具体的にイメージすることは難しいです。
こういったものにスタティックメソッドは使われるのです。
 
「staticでないメソッド 〇〇をstaticコンテキストから参照する」ことはできないとは、
Javaコンパイラの立場で言えば、あなたが呼び出そうとしているメソッドはどのインスタンスのものですか?
私にはわかりません。

と言っているようなものです。

Q.Javaが完全にできるようになるにはどうしたらいいでしょうか?
 
A:
恐らく完全に理解する日は永遠に来ません。でもそれでいいのです。
Javaを完全に理解する日が来るでしょうか?
Javaを完全に理解するとはどういうことでしょうか?
例えば、Javaのクラスは全部でいくつあるのでしょうか?
数えていないので分かりませんが、APIでパッケージ数を調べたところ3,328個ありました。(Java8)
それぞれのパッケージの中にクラスがあることを考えると膨大ですね。
さらに自社開発のクラスやサードパーティーが作成しているライブラリ(便利なプログラム集)、データベースやネットワークなどの周辺知識も必要です。
そう考えると、いつまでたってもJavaのほんの一部のままでしょうね。
でも、目的のプログラムが作れればいいのですから焦らずに頑張りましょう。