Programmetic or Jvm error/exception does not mean that,you through it explicitly or not.It means that,the cause of the error is something from code(maybe some unexpected solution in case of programetic) or the problem is with an error which might disturb the JVM in some unexpected way.
Basically, the idea behind the concept of "programmatically thrown exceptions" is that these are exceptions where the programmer deliberately and explicitly indicates an intention to possibly throw an exception. When you write an assert statement, you are explicitly creating the possibility of an AssertionError being thrown there.
In contrast, a "JVM thrown exception" occurs implicitly, i.e. without the Java programmer's deliberately declared intent. These happen most often when an expression evaluation stops prematurely (e.g. ArrayIndexOutOfBoundsException) or when the JVM itself encounters a problem (e.g. OutOfMemoryError).