Vladimir,
The code is fine and as you observed it works. Most of these comments are how you would improve it to be more "industrial strengh".
1) The following two are equivalent
I prefer the second because it is a bit easier to read/recognize the
pattern.
2) It is traditional to only use one character variable names for loop variables. What are "f", "s" and "t" ? In the real world, someone left to maintain the program would be left scratching his/her head.
3) I see some duplication in checkXXX. Consider passing f, s and t to a common method which does the logic for three in a row.
4) Why do you catch Exception? Are you expecting something to go wrong?
Also, you said the board size is configurable. If the board size is 5x5, do they need three in a row or five in a row?